布尔盲注。

盲注是注入的一种,指的是在不知道数据库返回值的情况下对数据中的内容进行猜测,实施SQL注入。盲注一般分为布尔盲注和基于时间的盲注和报错的盲注。本次主要讲解的是基于布尔的盲注。

本章分享的布尔注入是用的靶场的第二关来演示

靶场下载链接:GitHub - workcha/sqli-labs-master: sql注入必练习题目

第一步:检查网页有没有漏洞,上一章已经说了怎么判断有没有漏洞,这里就不在说了。

第二步: 使用 and ((select count(schema_name) from information_schema.schemata)=9)%23 来猜测MySQL里有多少个数据库,我这里的数据库有9个,你们的数据库数量可能不同,需要一个一个来猜,其中这里的=9,可以换成>9或<9来判断数量

如果我们猜测MySQL里的数据库数量不正确,那么就会出现下图这种情况,没有数据显示

第三步:使用 and (substr((select schema_name from information_schema.schemata limit 0,1),1,1)='a')%23 来猜测MySQL里的数据库名称中的第一个字符是不是等于a,如果不是等于a就没有数据显示,如上图所示。我们也可以使用 and (ascii(substr((select schema_name from information_schema.schemata limit 0,1),2,1))=110)%23 来把MySQL里的数据库名称中的第二个字符转换成ASCII码的形式,然后来猜测数据库名称第一个字符的ASCII码是不是等于110,但由于这种手动猜测的方式太慢,我们可以使用burp抓包工具来获取数据库名称里的每个字符,具体操作如下

1.抓取网页数据

2.发往爆破模块

 3.设置要爆破的内容

4.设置爆破的模式

5.设置爆破的类型

注:上面这个15可以改为20或30,因为数据库的名称可能很长,数值小了可能无法获取全部的数据库名称。

 6.开始爆破,等待爆破结束,查看爆破结果

这时我们已经获取到MySQL里第一个数据库名称,接下来我们把 and (substr((select schema_name from information_schema.schemata limit 0,1),1,1)='a')%23 这里面的 limit 0,1 改为 limit 1,1 再重新抓包,获取到MySQL里第二个数据库名称,然后以此类推,直到 limit 9,1 时停止,即可获取到MySQL里所有的数据库名称。

第四步:获取MySQL里的所有表名

使用 and (substr((select table_name from information_schema.tables limit 0,1),1,1)='a')%23或and (ascii(substr((select table_name from information_schema.tables limit 0,1),1,1))=110)%23 这个来猜测MySQL里的表名中的第一个字符是不是等于a或者MySQL里的表名中的第一个字符的ascii码是不是等于110。具体操作与查数据库名差不多,就不在演示了。

我们通过以上这四步就可以获取到MySQL里所有的数据库和表,这个布尔盲注适用于没有显示位的情况下使用。

注:此布尔盲注仅供学习参考。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值