盲注其实是sql注入的一种,之所以称为盲注是因为他不会根据你sql注入的攻击语句返回你想要知道的错误信息。
注:手工盲注很繁琐 需要一个一个的试 不过现在还是先学习手工理解了sql注入的原理再去用工具比较好
盲注分为两类:
1.布尔盲注 布尔很明显Ture跟Fales,也就是说它只会根据 你的注入信息返回Ture跟Fales,也就没有了之前的报错信息。
2.时间盲注 界面返回值只有一种,true 无论输入任何值 返回情况都会按正常的来处理。加入特定的时间函数,通过查看web页面返回的时间差来判断注入的语句是否正确。
相关函数
Length()函数 返回字符串的长度
substr()截取字符串,偏移是从1开始,而不是0开始
ascii()返回字符的ascii码
count(column_name)函数返回指定列的值的数目(NULL 不计入)
sleep(n):将程序挂起一段时间 n为n秒
if(expr1,expr2,expr3):判断语句 如果第一个语句正确就执行第二个语句如果错误执行第三个语句
测试
- 测闭合方式
输入’ or 1=1#不回显
输入" or 1=1#正常
可判定是双引号闭合。 - 测长度
判断数据库名的长度
输入" or (length(database())=10)–+正常
说明长度为8。 - 测字符
用substr()截取字符串的每个字符,ascii()将字符串转换成其ASCII码
输入" or (ascii(substr(database(),1,1))>97)–+正常
时间盲注
sqli-less-9为时间盲注
前面已经说过slee()函数跟if函数了
这里就直接构造如下语句
http://127.0.0.1/Less-9/?id=1' and (if(ascii(substr(database(),1,1))>100,sleep(10),null)) --+