前言:
前面学习了布尔盲注的exp,原理是根据页面的两个返回状态来确定注入的语句是否正确执行,从而得到我们想要的数据,但有时候,页面只会返回一种状态,布尔盲注就无法实行了,此时,我们就要用到另一种盲注方式:时间盲注,也叫延时注入
延时注入原理:
延时注入是利用sql语句达到延时的目的,在mysql中用的sleep()函数,
select sleep(3) 数据库延时3秒 返回信息。利用这个函数加上if函数进行判断,就可以达到延时注入,注入得出数据。
我们在exp中怎样利用呢?
我们可以获取注入代码执行之前的时间戳和注入代码执行后的时间戳,取两者的时间差,当时间差大于或等于我们注入语句中构造的延时时间(受到网络情况或其它因素的影响,一般延时的时间会大于我们规定的时间),则说明该注入语句被数据库成功执行,我们仍然要先获取到查询数据的长度,在依次判断出每一个字符,从而得到最终的数据。
有了这个思路,具体实现就很容易了:
我使用的环境是sql-labs靶场的第9关,直接用burp抓到数据包: