抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

上图~~~

DBabySQL1

界面很简洁,老样子,试试二次注入,发现然并卵。但是发现了这道题是POST传参。

打开burp suite抓了包并对其进行了篡改,但并没有什么用。

DBabySQL3

然后看了下他的返回值发现有一行不知道什么的注释,然后百度了下发现是base32编码

DBabySQL4

然后用base32解码后发现还要base64解码。

出来是select * from user where username = '$name'

这就可以看出这道题是对数据库进行查询的。

然后用刚刚了解到的fuzz测试测了下。啊~我这个fuzz字典感觉不是很好吧。

DBabySQL5

虽然不是很好,但还是看得出对哪些字符有过滤的,得知对联合查询并没有过滤但是对order、or、=等字符进行了过滤。

这里只能用unions elect代替order by了。

输入1’ unions elect 1,2,3,4# 返回错误 再试试 1’ union select 1,2,3#返回正确。

可以得知有3列字段。

这里使用联合查询数据库,报错注入查询,都不行。感觉没辙了,再试试时间注入。

结果都显示这个。麻了,然后查阅了大佬的博客发现一个新的知识点。

联合查询并不存在的数据时,联合查询就会构造一个虚拟的数据。

上面的尝试中,我们应该可以发现,admin的用户是存在的。

在知识点中,我是这样理解的,在联合查询一个并不存在的数据,他会构造一个虚拟的数据,我们利用这个虚拟的数据是可以登陆成功的。

大佬给的数据是这样的:

密码: 1234

MD5:81dc9bdb52d04dc20036dbd8313ed055

然后构造playload:

账号:1’ union select 1,’admin’,’81dc9bdb52d04dc20036dbd8313ed055’#

密码:1234

注意账号这里不能使用admin 具体我不清楚,我试了是不可以的。然后就直接拿到了flag。就是sqli-labs这个例子。

DBabySQL8

他是可以显示的,也就说明它虽不是真实的,但它是存在的。

原理就是构造一个虚拟身份来绕过审核机制。

DBabySQL6

[参考文献] 1.参考大佬博客
2.联合查询构造虚拟数据-知识详解

评论