PHP 5.2 00截断上传
漏洞简介
PHP的00截断是5.2.x版本的一个漏洞,当用户输入的url参数包含%00经过浏览器自动转码后截断后面字符。
漏洞示例代码
例如url输入的文件名1.txt%00.jpg经过url转码后会变为1.txt\000.jpg,测试文件1.php如下
1 | <?php |
测试文件1.txt如下
1 | <?php |
php5.2.x版本解析1.php时,会将1.txt\000.jpg解释为1.txt
修复
只要比较发现文件名的strlen长度和语法分析出来的长度不一样,就说明内部存在截断的字符,因此输出了打开文件失败的信息。