您当前位置: 首页 » 敏感函数 » urldecode()

urldecode()

2017年2月17日 | 发表评论(0) 查看评论

目前很多程序都会进行参数过滤,如addslashes()、mysql_real_escape_string()、mysql_escape_string()等或者使用GPC()进行防止注入。

使用上述函数或者GPC会给单引号、双引号、反斜杠、NULL加上反斜杠转义。如果某处使用了urldecode()则有可能导致二次编码绕过上述过滤函数,带入单引号、双引号和反斜杠。

以下代码:

若提交http://127.0.0.1/test/test.php?a=1%27 则输出1′

但是因为webserver有个自动编码功能,当我们提交http://127.0.0.1/test/test.php?a=1%2527时便会输出1’,导致我们成功引入单引号,造成注入。

在interface/search.php中

$tagkey = urldecode($this->fun->accept(‘tagkey’, ‘R’));  $tagkey使用了urldecode导致可绕过GPC和addslashes(),

$db_where.=” AND FIND_IN_SET(‘$tagkey’,tags)”;

看到$tagkey未经处理便直接带入sql语句,造成注入

$sql = “SELECT did,lng,pid,mid,aid,tid,sid,fgid,linkdid,isclass,islink,ishtml,ismess,isorder,purview,recommend,tsn,title,longtitle,color,author,source,pic,link,oprice,bprice,click,description,keywords,addtime,template,filename,filepath FROM $db_table $db_where LIMIT 0,$pagemax”

 

http://www.am0s.com/espcms/index.php?ac=search&at=taglist&tagkey=a%2527

分类:

敏感函数

| 标签:

,