PHP 5.2 00截断上传

PHP 5.2 00截断上传

漏洞简介

PHP的00截断是5.2.x版本的一个漏洞,当用户输入的url参数包含%00经过浏览器自动转码后截断后面字符。

漏洞示例代码

例如url输入的文件名1.txt%00.jpg经过url转码后会变为1.txt\000.jpg,测试文件1.php如下

1
2
3
<?php
include "1.txt\000.jpg";
?>

测试文件1.txt如下

1
2
3
<?php
echo 'fireXXX';
?>

php5.2.x版本解析1.php时,会将1.txt\000.jpg解释为1.txt

修复

只要比较发现文件名的strlen长度和语法分析出来的长度不一样,就说明内部存在截断的字符,因此输出了打开文件失败的信息。