绕过魔术引号
简介
现在的WEB程序基本都有对SQL注入的全局过滤,运维人员配置PHP环境是一般会开启魔术引号GPC,即magic_quotes_gpc=On的情况下,如果输入的数据有单引号(’)、双引号(”)、反斜线(\)与 NUL(NULL 字符)等字符都会被加上反斜线进行转义处理。不过GPC在PHP5.4版本后就取消了,所以现在一般都用addslashes()函数来代替GPC进行过滤处理。目前用PHP开发的应用一般是MVC的框架模式进行开发,对GET、POST和COOKIE等传递的参数通常使用addslashes()函数进行转义,并引入一个类似common.php的文件进行处理addslashes()函数对接收的参数进行过滤,尤其是单引号。
绕过
-
查看sql语句是否被 ’ 或 “ 保护,’ " 是否被魔术引号或addslashes转义(GPC在PHP5.4版本后就取消了),转义了之后,查看源代码是否有编码滥用,导致可以绕过转义。
-
编码解码函数导致的Bypass
一些编码解码的函数像[[urldecode]]、[[base64]]decode的使用会导致绕过addslashes函数的全局防护 -
宽字节绕过 %df (宽字节注入产生原因:mysql_query(“SET NAMES ‘gbk’”))
-
多重url编码
http://localhost/sqltest/urldecode.php?id=1%2527 %2527是 ’ 的两重