一、盲注介绍
盲注对应的是显错注入和报错注入
union select 联合查询注入
updatexml 报错注入
只会返回两种状态:
1、有数据回显
2、无数据回显
当页面没有任何回显点,且使用报错注入也无效时,使用盲注
盲注分类:
1、布尔型盲注
布尔:数据类型,返回0或1
2、时间型盲注
sleep() 时间差
二、盲注需要掌握的的函数
lenth() 返回字符串长度
substr() 截取字符串,语法:SUBSTR(str,pos,len);
ascii() 返回字符的ascii码,把字符变成数字
sleep() 把程序挂起一段时间n,单位是秒
if(expr1,expr2,expr3) 判断语句 如果第一个语句正确就执行第二个语句,如果错误就执行第三个语句
三、布尔盲注的过程
1、判断数据库字符串长度
在url后加上length(database()),选择利用二分法猜长度
2、利用Burp爆破
(1)查找数据库名
在url后输入and ascii(substr(database(),3,1))=某个数字,这里是把数据库名截取,截取到的字符转换成ascii码来判断
抓取数据包,Attack type选择最后一个选项cluster boom(集束爆破,适用于多个爆破点,sniper适用于一个爆破点),,把substr(str,pos,len)中pos的位置和点右侧按钮add&,最后=后的ascii码也add&。
右键发送到instruder,点击pay load选项卡,设置第一个和第二个pay load,第一个长度是from 1 to 数据库字符串长度,第二个是1-128。点击start attack运行。
爆破后,根据lenth排序,寻找长度不正常的数字,找到字符串的ascii码值,对应ascii表,找到对应字母,得到数据库名
(2)查找数据表字符串长度
url中输入length(select table_name from information_schema.tables where table_schema=database() limit 0,1)>某个数字
利用二分法确定数据表长度,也可以用Burp爆破确定长度(这里选用sniper)
(3)根据数据库自带数据表查找数据表和字段名
这里用Burp抓包时间成本太大,一般使用sqlmap。内容和之前学的sqlmap对GET注入类似,在此不赘述。
四、时间盲注
联合查询 > 报错注入 > 布尔盲注 > 时间盲注
通过时间延迟来判断是否存在注入。配合select if(length(database())>5,sleep(2),1)函数等,去猜。必要时配合BurpSuit的爆破。
通过时间延迟函数sleep()来判断书否存在时间盲注,配合select if (length(database())>5,sleep(5),1)函数等,猜数据库字段长度,配合Burp爆破。