手机
当前位置:查字典教程网 >编程开发 >php教程 >windows的文件系统机制引发的PHP路径爆破问题分析
windows的文件系统机制引发的PHP路径爆破问题分析
摘要:1.开场白此次所披露的是以下网页中提出的问题所取得的测试结果:http://code.google.com/p/pasc2at/wiki/S...

1.开场白

此次所披露的是以下网页中提出的问题所取得的测试结果:

http://code.google.com/p/pasc2at/wiki/SimplifiedChinese

<?php for ($i=0; $i<255; $i++) { $url = '1.ph' . chr($i); $tmp = @file_get_contents($url); if (!empty($tmp)) echo chr($i) . "rn"; } ?>

已知1.php存在,以上脚本访问的结果是:

1.php 1.phP 1.ph< 1.ph>

都能得到返回。

前两种能返回结果是总所周知的(因为windows的文件系统支持大小的互转的机制),另外的两种返回引起了我们的注意。

测试php版本:PHP4.9,PHP5.2,PHP5.3,PHP6.0

测试系统:WINXP SP3 X32,WINXP SP2 X64,WIN7,WIN2K3

经测试我们得出的结论是:该漏洞影响所有的windows+php版本

2.深入探查模糊测试的结果

为了继续深入探查关于该bug的信息,我们对demo做了些许修改:

<?php for ($j=0; $i<256; $j++) { for ($i=0; $i<256; $i++) { $url = '1.p' . chr($j) . chr($i); $tmp = @file_get_contents($url); if (!empty($tmp)) echo chr($j) . chr($i) . "rn"; } } ?>

在调试php解释器的过程中,我们将此“神奇”的漏洞归结为一个Winapi 函数FindFirstFile()所产生的结果(http://msdn.microsoft.com/en-us/library/aa364418(v=vs.85).aspx).更好玩的是,当跟踪函数调用栈的过程中我们发现字符”>”被替换成”?”,字符”<”被替换成”*”,而符号”(双引号)被替换成一个”.”字符。这在2007年msdn公开的文档中被提及:

【windows的文件系统机制引发的PHP路径爆破问题分析】相关文章:

也谈 PHP 和 MYSQL

[FAQ]PHP中的一些常识:类篇

PHP开发文件系统实例讲解

多文件上载系统完整版

PHP中路径问题的解决方案

php 批量查询搜狗sogou代码分享

Windows下的PHP5.0安装配制详解

使用PHP制作新闻系统的思路

Smarty实例教学 实例篇

php中文件上传的安全问题

精品推荐
分类导航