在页面中,若不管输入什么,数据交互完成以后目标网站都没有正确和错误的页面回显,这个时候我们可以利用页面响应的时间来判断SQL语句有没有在目标数据中得到执行
1.判断是否存在注入
通过时间函数进行测试,输入1 and sleep(5)或者1' and sleep(5)%23进行测试,如果页面有延迟,说明SQL语句在数据库里被执行
从网络一格可以看出指令确实延迟了5s执行,SQL语句执行有效
2.获取数据库名长度
使用if语句进行判断,语法格式if(expr1,expr2,expr3),如果第一个语句正确执行第二个语句,否则执行第三个语句
倘若数据库长度为8,则延迟响应5s,根据网页延迟响应可知数据库长度为8
3.获取数据库名
同时使用if语句,ASCII函数,bp爆破来判断数据库名
响应时间大于5000的即为爆破结果,对应所得结果为security
4.获取数据库表
(1)获取表的数量
根据回响时长可知表数为4
(2)获取表的长度
若要获取第二个表的长度,将limit后的0改为1即可,根据测试,四个表的长度分别为6,8,7,5
(3)获取数据库表名
对应的字符为emails
5.获取表中字段
(1)获取字段数量
(2)获取字段长度
第一个字段长度为2
第二个字段长度为8
(3)获取字段具体名
由爆破结果可知,第一个字段名为id
6.获取记录数据
(1)获取表中有多少条记录
(2)获取记录长度
(3)获取记录具体内容
在我看来,盲注中布尔盲注和时间盲注区别不大,基本做题步骤以及语法没有什么区别,唯一区别在于时间盲注中的if语句,利用if语句前后项的逻辑关系以及页面回响是否存在延迟来判断SQL语句执行的正误