SQL注入攻击



SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。

对于初学者而言,找漏洞最好是基于白盒审计进行,所谓白盒审计可以简单地理解为就是看着代码找漏洞,当然了,在web方面的代码审计可没想象的那么轻松,不会像C语言中很经典的溢出,先定义一个buffer,然后用一个gets()函数直接获取内容,这么简单的溢出,泥萌也太小瞧程序媛/猿了。在web方面的代码审计,感谢伟大的社会主义社会,我国大部分的网站都是php建的(画外音:php是世界是最好的语言,哈哈),所以大多数情况下我们都是审计php代码,php函数又那么多,相互之间互相调用,使得代码审计不容易,当然了,也不难,只要掌握了技巧,结合经验,就能找出漏洞所在。

在正式挖洞前,我们先看看DVWA给出的四种级别的SQL注入的源代码。

 

0x01基于dvwa的代码审计

初学者接触到入门级别的代码审计的内容。

 

<img src="https://pic4.zhimg.com/50/v2-6e4b867c911db6c2464986a7dc80a907_hd.jpg" data-rawwidth="558" data-rawheight="337" class="origin_image zh-lightbox-thumb" width="558" data-original="https://pic4.zhimg.com/v2-6e4b867c911db6c2464986a7dc80a907_r.jpg">

DVWA使用界面

<img src="https://pic1.zhimg.com/50/v2-1e3f4aaed6e5d767c3eb6418b4108c65_hd.jpg" data-rawwidth="558" data-rawheight="333" class="origin_image zh-lightbox-thumb" width="558" data-original="https://pic1.zhimg.com/v2-1e3f4aaed6e5d767c3eb6418b4108c65_r.jpg">

 

SQL注入(SQL Injection)

<img src="https://pic2.zhimg.com/50/v2-f3e8a0e868afc50d40fb298ac3cdb384_hd.jpg" data-rawwidth="558" data-rawheight="337" class="origin_image zh-lightbox-thumb" width="558" data-original="https://pic2.zhimg.com/v2-f3e8a0e868afc50d40fb298ac3cdb384_r.jpg">

 

在左下角的DVWA Security可以调节难度系数,即low,medium,high,impossible选中后点击submit提交即可。

<img src="https://pic2.zhimg.com/50/v2-7829c4dbf805da8e74ddfeaf713d8fe2_hd.jpg" data-rawwidth="558" data-rawheight="439" class="origin_image zh-lightbox-thumb" width="558" data-original="https://pic2.zhimg.com/v2-7829c4dbf805da8e74ddfeaf713d8fe2_r.jpg">

 

点击左下角view source可以看到源代码,方便进行代码审计

我们可以看到四种级别的代码分别如下所示:

代码:

<img src="https://pic2.zhimg.com/50/v2-7829c4dbf805da8e74ddfeaf713d8fe2_hd.jpg" data-rawwidth="558" data-rawheight="439" class="origin_image zh-lightbox-thumb" width="558" data-original="https://pic2.zhimg.com/v2-7829c4dbf805da8e74ddfeaf713d8fe2_r.jpg">

 

低级(low)

分析:

关键语句:

 $id = $_REQUEST[ 'id' ]; 

    // Check database 

    $query  = "SELECT first_name, last_name FROM users WHERE user_id = '$id';"; 

可以看到:

Low级别的代码对来自客户端的参数id没有进行任何的检查与过滤,存在明显的SQL注入。

<img src="https://pic1.zhimg.com/50/v2-84553979b0813e1b4b4947a73dd4a25a_hd.jpg" data-rawwidth="558" data-rawheight="455" class="origin_image zh-lightbox-thumb" width="558" data-original="https://pic1.zhimg.com/v2-84553979b0813e1b4b4947a73dd4a25a_r.jpg">

 

中级(medium)

分析:

关键代码:

$id = mysql_real_escape_string( $id ); 
// Check database 
$query = "SELECT first_name, last_name FROM
users WHERE user_id = $id;";

可以看到:

Medium级别的代码利用mysql_real_escape_string函数对特殊符号\x00,\n,\r,\,’,”,\x1a进行转义,在一定程度上控制了用户的输入

<img src="https://pic2.zhimg.com/50/v2-483df6b63eae4f384afedab493b315a0_hd.jpg" data-rawwidth="558" data-rawheight="451" class="origin_image zh-lightbox-thumb" width="558" data-original="https://pic2.zhimg.com/v2-483df6b63eae4f384afedab493b315a0_r.jpg">

 

高级(high)

分析:

关键语句:

$query = "SELECT first_name, last_name FROM users WHERE user_id = $id
LIMIT 1

可以看到:

代码希望通过LIMIT 1来控制使得只输出一个查询结果

<img src="https://pic3.zhimg.com/50/v2-8b3eb650f984bbe448ce6bd4e51bce0d_hd.jpg" data-rawwidth="558" data-rawheight="463" class="origin_image zh-lightbox-thumb" width="558" data-original="https://pic3.zhimg.com/v2-8b3eb650f984bbe448ce6bd4e51bce0d_r.jpg">

不可能(Impossible)

分析:

关键代码:

       $data = $db->prepare( 'SELECT first_name, last_name FROM users WHERE user_id = (:id) LIMIT 1;' ); 

        $data->bindParam( ':id', $id, PDO::PARAM_INT ); 

可以看到:

代码中限制返回的查询结果数量为一时,才会输出,防止了大量数据的泄露,同时采用了PDO技术,隔离了代码与数据,使得用户输入的数据不再被当作代码执行,采用这种方案,杜绝了SQL注入漏洞的发生

 

0x02挖掘漏洞

注:

1.接下来的过程中会大量用到sqlmap,部分站点的漏洞将直接以sqlmap的形式给出。所以建议小伙伴先去熟悉下sqlmap。

2. 以下提交的漏洞均已被厂家修复,小伙伴们就不要想搞事情了

3.本文展现的漏洞在测试前已获授权,请小伙伴们勿非法测试

先来枚有web页面的漏洞:

<img src="https://pic1.zhimg.com/50/v2-327cee14557ba9bfdaddfe5569ffb96e_hd.jpg" data-rawwidth="558" data-rawheight="275" class="origin_image zh-lightbox-thumb" width="558" data-original="https://pic1.zhimg.com/v2-327cee14557ba9bfdaddfe5569ffb96e_r.jpg">

存在漏洞的页面

扫目录时发现该url下存在某事件型漏洞

<img src="https://pic2.zhimg.com/50/v2-e5e9cb09be18f7dcc736f3953fe9261f_hd.jpg" data-rawwidth="558" data-rawheight="224" class="origin_image zh-lightbox-thumb" width="558" data-original="https://pic2.zhimg.com/v2-e5e9cb09be18f7dcc736f3953fe9261f_r.jpg">

采用某位大神的中转脚本:

<img src="https://pic1.zhimg.com/50/v2-560c14f151f86dae3c8bd524bc4ef6aa_hd.jpg" data-rawwidth="558" data-rawheight="438" class="origin_image zh-lightbox-thumb" width="558" data-original="https://pic1.zhimg.com/v2-560c14f151f86dae3c8bd524bc4ef6aa_r.jpg">

 

通过sqlmap神器成功挖到漏洞

<img src="https://pic3.zhimg.com/50/v2-0cebb2d6d9d0c45b7582b0499b37aa00_hd.jpg" data-rawwidth="558" data-rawheight="188" class="origin_image zh-lightbox-thumb" width="558" data-original="https://pic3.zhimg.com/v2-0cebb2d6d9d0c45b7582b0499b37aa00_r.jpg">

 

拿到的数据库

<img src="https://pic1.zhimg.com/50/v2-da4ce609e39d958569c9be98eaa150a0_hd.jpg" data-rawwidth="226" data-rawheight="154" class="content_image" width="226">

 

Sqlmap测试时截图

<img src="https://pic2.zhimg.com/50/v2-c5773b1011ee0a556c33b922f7db7c07_hd.jpg" data-rawwidth="558" data-rawheight="123" class="origin_image zh-lightbox-thumb" width="558" data-original="https://pic2.zhimg.com/v2-c5773b1011ee0a556c33b922f7db7c07_r.jpg">

 

总结:第一枚漏洞主要是采用某事件型漏洞结合sqlmap挖到的,难度相当于DVWA中的Medium级别

什么?没有数据看着不过瘾?你这是要搞事情啊大兄弟!好吧,再来一枚数据量大的

 

第二枚漏洞:

测试时没有截web的图,只有sqlmap,将就着看吧,看看

<img src="https://pic3.zhimg.com/50/v2-169107c17d9391a76365209db94ef5ca_hd.jpg" data-rawwidth="533" data-rawheight="39" class="origin_image zh-lightbox-thumb" width="533" data-original="https://pic3.zhimg.com/v2-169107c17d9391a76365209db94ef5ca_r.jpg">

 

存在漏洞的站点

Sqlmap扫一发

<img src="https://pic1.zhimg.com/50/v2-b226ac6624a57ccab9b1322d94db041a_hd.jpg" data-rawwidth="558" data-rawheight="547" class="origin_image zh-lightbox-thumb" width="558" data-original="https://pic1.zhimg.com/v2-b226ac6624a57ccab9b1322d94db041a_r.jpg">
 

 

加个—tables继续

<img src="https://pic3.zhimg.com/50/v2-add5b245b78234684e8ffe8a17e05af0_hd.jpg" data-rawwidth="558" data-rawheight="612" class="origin_image zh-lightbox-thumb" width="558" data-original="https://pic3.zhimg.com/v2-add5b245b78234684e8ffe8a17e05af0_r.jpg">

 

就拿上张图的mallbuilder来开刀吧

<img src="https://pic3.zhimg.com/50/v2-bac5669f33d7b1b36baf9a3e7c102ad1_hd.jpg" data-rawwidth="468" data-rawheight="690" class="origin_image zh-lightbox-thumb" width="468" data-original="https://pic3.zhimg.com/v2-bac5669f33d7b1b36baf9a3e7c102ad1_r.jpg">

 

继续—current-db

 

<img src="https://pic4.zhimg.com/50/v2-60980fb9ea51e5a403b8597e181d4ce7_hd.jpg" data-rawwidth="558" data-rawheight="588" class="origin_image zh-lightbox-thumb" width="558" data-original="https://pic4.zhimg.com/v2-60980fb9ea51e5a403b8597e181d4ce7_r.jpg">

 

<img src="https://pic2.zhimg.com/50/v2-f7a90a3527b42e82b751d02eed1a7cf8_hd.jpg" data-rawwidth="558" data-rawheight="745" class="origin_image zh-lightbox-thumb" width="558" data-original="https://pic2.zhimg.com/v2-f7a90a3527b42e82b751d02eed1a7cf8_r.jpg">

 

红色打码的部分是手机号或真实姓名或邮箱号,过于敏感就打码了,可以看到图中下面password就是密码编码加密后的字符串

拿到用户名和密码后我们可以登陆后台

<img src="https://pic2.zhimg.com/50/v2-1dbf49866c881fdf49f6fee7d0cd6015_hd.jpg" data-rawwidth="558" data-rawheight="280" class="origin_image zh-lightbox-thumb" width="558" data-original="https://pic2.zhimg.com/v2-1dbf49866c881fdf49f6fee7d0cd6015_r.jpg">

 

红色打码部分为收货人姓名及手机号,有一条还包括收货地址

红色打码部分为手机号

 

<img src="https://pic1.zhimg.com/50/v2-43bf5cfbaaec423bc192ddfc971cd00a_hd.jpg" data-rawwidth="558" data-rawheight="267" class="origin_image zh-lightbox-thumb" width="558" data-original="https://pic1.zhimg.com/v2-43bf5cfbaaec423bc192ddfc971cd00a_r.jpg">
 

可以看到后台所有的功能我们都是可以使用的,就不继续了

总结:通过简单的sqlmap命令指定特定的表、数据库来“脱裤”,拿到后台登陆帐号密码,进而进行进一步的操作。此站点的代码强度相当于DVWA中的Medium级别.

 

 

转载于:https://www.cnblogs.com/EasonCao/p/9064947.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值