主要用于在程序返回时只会返回正确或错误两种回显时
盲注常用的函数:
length()返回字符串长度
substr()截取字符串 用法: substr(字符串,从第几位开启截取,截取几位)
ascii()返回字符的ascii码 用于盲注时猜字符
sleep(n)暂停n秒
if(expr1,expr2,expr3)判断语句如果第一个正确就执行第二个如果错误执行第三个
注入步骤:
1.确定注入点并判断是字符型还是数字型
1’ and 1=1
2.猜测库名
2.1使用length()函数猜测库名有几位
2.2使用ascii()函数和substr()函数组合猜测每1位字符的ascii码
3.得出库名后猜表名
3.1利用information_schema中的tebles表来进行当前库中的表数量猜测
select count(table_name)from。。。。
3.2利用length()函数猜测各表的表名长度
3.3利用ascii() substr()limit 等函数猜测各表的名字
4.得出表名后猜测列名
4.1利用information_schema中的columns来猜测对应表中的字段数量
4.2利用length()函数和limit组合的方式猜测各列的字段名长度
4.3利用ascii等函数猜测各字段的名字
5.在得出数据库名、表名、列名后猜测感兴趣列的数据内容
可以先猜测数据长度然后在通过二分法逐字猜测也可以已暴力猜测常见内容
时间盲注
在布尔盲注的基础上通过if(a,b,c)函数和sleep()函数的组合来进行盲注;
确认是否存在时间盲注的注入点的方法是在可能存在的注入点后加and sleep(值)来看浏览器相应时间和不加是的时间差;
时间盲注主要用在网站无论对错显示相同的情况下,无法使用联合查询也无法使用布尔盲注时;
使用方法:
在注入点后使用if(语句1,语句2,语句3)
语句1处为布尔盲注的流程,在语句2出写sleep(值),语句3处自定义
和布尔盲注的区别在于我们在尝试布尔盲注时他会返回错误或正确两种显示;
时间盲注的话当语句1的判定正确时延时X秒否者执行语句3