首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

初级注入玩不下去了,我们开始玩高级的!

sql注入攻击,很多同学都听说过吧,可能你刚开始学黑客的时候都是用这个方法黑站的。比如一些老工具,啊D,sqlmap,明小子都是基于sql注入的,但是它们都是一些基础的简单工具,针对于十年前的网站或者还可以,现在基本上没有它们的用武之地。

相信现在大部分遇到一些网站进行手工注入就是下面的情况:

这是因为大部分的网站服务器都有WAF(web应用防火墙)

可见,不管多么low的网站,这些简单的注入都搞不掉了。

怎么办?既然初级的注入不行我们就玩玩高级的sql注入。把之前的sql注入语句稍微更改一下就OK了。主要有以下五种方法绕过防御:

1、大小写变种

2、URL编码

3、SQL注释

4、空字节

5、二阶SQL注入

1、大小写变种

这种技巧适用于关键字阻塞过滤器不聪明的时候,我们可以变换关键字字符串中字符的大小写来避开过滤,因为使用不区分大小写的方式处理SQL关键字。

例如:(下面的代码就是一个简单的关键字阻塞过滤器)

MySQL

这段代码的缺陷就在strstr()函数是对大小写敏感的,所以我们可以通过大小写变种来绕过。

=

2、URL编码

URL编码用途广泛,可以通过它绕过多种类型的输入过滤器。

MySQL

双URL编码有时候会起作用,如果Web应用多次解码,在最后一次解码之前应用其输入过滤器。

因为双URL编码,第一次解码%2f%2a进入输入过滤器,所以成功绕过了。当然这个使用前提是后面有一个URL解码。

3、SQL注释

很多开发人员认为,将输入限制为单个就可以限制SQL注入攻击,所以他们往往就只是阻止各种空白符。

MySQL

但是内联注释不使用空格就可以构造任意复杂的SQL语句。

4、空字节

通常的输入过滤器都是在应用程序之外的代码实现的。比如入侵检测系统(IDS),这些系统一般是由原生编程语言开发而成,比如C++,为什么空字节能起作用呢,就是因为在原生变成语言中,根据字符串起始位置到第一个出现空字节的位置来确定字符串长度。所以说空字节就有效的终止了字符串。

只需要在过滤器阻止的字符串前面提供一个采用URL编码的空字节即可,例如:

MySQL

5、二阶SQL注入

实际上到目前为止,你在网上大部分搜索SQL注入文章 基本都可以归类到”一阶(first-order)”SQL注入中,因为这些例子涉及的事件均发生在单个HTTP请求和响应中,如下所示:

(1) 攻击者在HTTP请求中提交某种经过构思的输入。

(2) 应用处理输入,导致攻击者注入的SQL查询被执行。

(3) 如果可行的话,会在应用对请求的响应中向攻击者返回查询结果。

另一种不同的SQL注入攻击是”二阶(second-order)”SQL注入,这种攻击的事件时序通常如下所示:

(1) 攻击者在HTTP请求中提交某种经过构思的输入。

(2) 应用存储该输入(通常保存在数据库中)以便后面使用并响应请求。

(3) 攻击者提交第二个(不同的)请求。

(4) 为处理第二个请求,应用会检索已经存储的输入并处理它,从而导致攻击者注入的SQL查询被执行。

(5) 如果可行的话,会在应用对第二个请求的响应中向攻击者返回查询结果。

第5种方法可能对我们小白比较有难度,大家可以先放放,把前4种方法搞明白了再说。找一些低级的网站来练练手试一试!

大家有什么问题可以在下面留言,酷哥都会看到的。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180422G1300600?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券