时间盲注
盲注就是在SQL注入过程中,SQL语句执行后,查询到的数据不能回显到前端页面。此时,我们需要利用一些方法进行判断或者尝试,这个过程称之为盲注。
时间盲注特性
在页面中,不管用户输入什么,数据交互完成以后目标网站没有错误和正确的页面回显,这种情况我们可以利用时间函数来判断数据有没有在目标数据中得到执行。当然也需要构造闭合。
如下图不管我们输入什么,页面显示结果都是一样的
![9c68b7a115084af4994d7fdbb3876578.png](https://img-blog.csdnimg.cn/direct/9c68b7a115084af4994d7fdbb3876578.png)
![9545bc0a09394aad9aab51e0d2bfe2ad.png](https://img-blog.csdnimg.cn/direct/9545bc0a09394aad9aab51e0d2bfe2ad.png)
![18b7b0c19d8c407199b726f4aca6b3d7.png](https://img-blog.csdnimg.cn/direct/18b7b0c19d8c407199b726f4aca6b3d7.png)
时间盲注的基本流程
可以看到攻击流程和布尔盲注流程一样,其实方法也无差别
1、判断是否存在注入
2、获取数据库长度
3、逐字猜解数据库名
4、猜解表名数量
5、猜解某个表名长度
6、逐字猜解表名
7、猜解列名数量
8、猜解某个列名长度
9、逐字猜解列名
10、判断数据数量
11、猜解某条数据长度
12、逐位猜解数据
攻击过程
判断是否存在注入
由于没有任何的回显内容,所以无法通过正常的方法判断是否存在注入,可以使用1 and sleep(5)或者1' and sleep(5)#进行测试,如果页面执行有延迟,说明存在漏洞。
sleep(5)的含义是五秒后做出回应
![6110ff68d85342a3930f97aad49f2a00.png](https://img-blog.csdnimg.cn/direct/6110ff68d85342a3930f97aad49f2a00.png)
发现这个延时了两秒左右,这肯定不是数字型
![4682d19e1a494885afe3664ce0f92949.png](https://img-blog.csdnimg.cn/direct/4682d19e1a494885afe3664ce0f92949.png)
![04a8da674bad44cca6332d7f359c30cd.png](https://img-blog.csdnimg.cn/direct/04a8da674bad44cca6332d7f359c30cd.png)
发现延时7秒左右,是因为我们网络也有延迟,在数据库中进行查询就是准确的时间。所以他是单引号闭合。
![9e6789650201459389fd3f23a3b9dc79.png](https://img-blog.csdnimg.cn/direct/9e6789650201459389fd3f23a3b9dc79.png)
获取数据库长度
可以使用if语句进行判断,语法格式:if(expr1, expr2, expr3):判断语句如果第一个语句正确就执行第二个语句,否则执行第三个语句如何理解这句话呢?我们可以先在数据库执行下面这条语句
1' and if(length(database())=8,sleep(5),1)--+
,查询语句与布尔盲注并无区别只是用了两个函数
![bd1ce6bee42540dbad878ac7aeaa9830.png](https://img-blog.csdnimg.cn/direct/bd1ce6bee42540dbad878ac7aeaa9830.png)
![c61bddfec74d4033b58a109cbf9840dd.png](https://img-blog.csdnimg.cn/direct/c61bddfec74d4033b58a109cbf9840dd.png)
获取数据库名
1' and if(ascii(substr(database(),1,1))=115,这里有些区别的就是使用burpsuite爆破时有写区别
再根据响应长度判断你会发现不管是什么长度他们返回的都是一样的,一开始也说了时间盲注不管查询对错返回的都是一样的
要将这两个勾选上,查看响应时间,网页响应时间是七秒左右这样就能判断出来了
查询完数据库的长度和名字就会发现核心查询语句和布尔盲注一模一样,这里我就不再赘述,不理解的小伙伴移步我的上一篇文章布尔盲注http://t.csdnimg.cn/031dY