所以称为盲注是因为他不会根据你sql注入的攻击语句返回你想要知道的错误信息。
盲注分为两类:
1.布尔盲注 布尔很明显Ture跟Fales,也就是说它只会根据 你的注入信息返回Ture跟Fales,也就没有了之前的报错信息。
2.时间盲注 界面返回值只有一种,true 无论输入任何值 返回情况都会按正常的来处理。加入特定的时间函数,通过查看web页面返回的时间差来判断注入的语句是否正确。
1.布尔盲注 布尔很明显Ture跟Fales,也就是说它只会根据 你的注入信息返回Ture跟Fales,也就没有了之前的报错信息。
2.时间盲注 界面返回值只有一种,true 无论输入任何值 返回情况都会按正常的来处理。加入特定的时间函数,通过查看web页面返回的时间差来判断注入的语句是否正确。
需要用到的函数:
Length()函数 返回字符串的长度
Substr()截取字符串
Ascii()返回字符的ascii码
sleep(n):将程序挂起一段时间 n为n秒
if(expr1,expr2,expr3):判断语句 如果第一个语句正确就执行第二个语句如果错误执行第三个语句
接下来利用substr函数与ascii函数构造猜测数据库名ascii码的值的语句
通过二分法找到第一个字母
115即字母s 依次猜解
然后再猜解表 即把 database() 改成(select table_name from information_schema.tables where table_schema="security")
101即字母小写字母e 依次爆破 对了 记得用length查下字母长度
剩下的猜列名同理
既然知道是布尔值的盲注,可利用sqlmap来注入
通过 --technique指定注入类型
--bath 让sqlmap自动输入
--dbms mysql 指定数据库系统为mysql绕过sqlmap的自动检测
-v 显示 (0-6)
emmmm 出现太多payload
还是把-v的等级改成 0吧
刷了半个小时抖音终于出来了
时间盲注
利用的函数为sleep() if()
先判断是否为时间注入
再猜解数据库 ,通布尔盲注一样
同理用sqlmap简单