马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
盲注是注入的一种,指的是在不知道数据库返回值的情况下对数据中的内容举行推测,实验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里全部的数据库和表,这个布尔盲注实用于没有体现位的情况下利用。
注:此布尔盲注仅供学习参考。
|