PHP 双字节、宽字节编码漏洞 |
本文标签:双字节,宽字节 代码如下: 还是用一个demo.php显示效果,代码如下: 复制代码 代码如下:<?php header("Content-Type:text/html;Charset=gb2312"); echo $_GET["str"]; //受污染的,但还有gpc echi "<br/>"; echo addslashes($_GET["str"]); //调用addslashes函数过滤有害字符 ?> 此时gpc=on 。先看结果 1) http://127.0.0.1/demo.php?str=php 2) http://127.0.0.1/demo.php?str=php 3) http://127.0.0.1/demo.php?str=%d5 实例2中,php被gpc和addslashes过滤了,但3却没有 。 这个%d5也可以写出%d5%27 。当提交%d5时 会被转义,整个字符为 %d5\,\的编码为5c 。 而%d5%5c高8位合并编码为汉字誠,\被我们非法利用,最终%d5经转义合并编码为“誠 ”进入sql不做过滤 。 要了解这些先要百度一下所谓的“双字节”,也可以参考 http://bbs.7747.net/simple/?t105469.html 一篇老文,因为临时要用到,就拉过来学习一下 。 另附文章《双字节编码 php的隐形杀手》的下载地址,《黑客防线2009精华奉献本》上下册 |