由FindFirstFile()所引发的PHP解释器的神奇解析行为

由于FindFirstFile()函数处理存在Bug,导致调用了该函数的PHP解释器也引发了一系列的问题。

在实践中发现以下几个表达式都是可以成功包含文件的(假设1.php存在)

include('1.php')
include('1.phP')
include('1.ph<')
include('1.ph>')

即可以用<代替*(这意味着可以匹配任意个字符)
用>代替?(这意味着可以匹配单个字符)
还可以用"代替.

不只是include受到影响,凡是PHP解释器调用过FindFirstFile()来处理的函数都存在这样的问题。下面列表都是受影响的函数。

include()
include_once()
require()
require_once()
fopen()
ZipArchive::open()
copy()
file_get_contents()
parse_ini_file()
readfile()
file_put_contents()
mkdir()
tempnam()
touch()
move_uploaded_file()
opendir()
readdir()
rewinddir()
closedir()

具体在win的哪些版本受到影响大家可以自己实验下。

关于漏洞的其它详情可以看下: http://www.madchat.fr/coding/php/secu/onsec.whitepaper-02.eng.pdf

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • php usleep() 函数延迟代码执行若干微秒。 unpack() 函数从二进制字符串对数据进行解包。 uni...
    思梦PHP阅读 6,120评论 1 24
  • PHP常用函数大全 usleep() 函数延迟代码执行若干微秒。 unpack() 函数从二进制字符串对数据进行解...
    上街买菜丶迷倒老太阅读 5,189评论 0 20
  • 定义函数的方法有两种:函数声明和函数表达式 类似这样的就是函数表达式 两者有什么不同? 函数表达式可以忽略标识符,...
    codeffee阅读 2,540评论 0 0
  • 每到夏季每个人都经常受到蚊虫的叮咬,反到不能安然入梦,那么有哪些方法能够驱除蚊虫呢? 1、把橘红色的玻璃纸套在灯泡...
    情丶不弃阅读 1,560评论 0 0
  • 2018年4月15日 农历二月三十 日星期 天 阵雨大风 读经人:妈妈、姐姐钰婷(妹妹钰殷听为主) 读经方式:用...
    香儿虫草醋蛋归元液阅读 1,800评论 0 0