美文网首页我爱编程
由FindFirstFile()所引发的PHP解释器的神奇解析行

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

作者: PureT | 来源:发表于2018-04-16 22:00 被阅读0次

由于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

相关文章

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

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

  • Modern PHP 读书笔记2

    Zend OPcache 字节码缓存:PHP是解释型语言,PHP解释器执行PHP脚本时会解析PHP脚本代码,把PH...

  • PHP-FPM以及performance tuning

    PHP5之前是采用PHP-CGI,PHP-CGI是PHP解释器,它是个CGI程序,本身只能解析请求,不能管理进程。...

  • PHP深入理解一

    PHP的核心组成,包括两部分 :ZEND引擎PHP内核。Zend引擎:负责代码的解析、翻译和执行(解释器部分),负...

  • 1.1 php标记

    标记 php解析器会解析开始和结束标记之间的 php代码,其余部分,会...

  • 正则表达式进一步学习

    界定符 用法:/[0-9]/,#[0-9]#说明:表示正则表达式的开始和结束,具体的由解析器决定告诉php解析器的...

  • JavaScript解释器

    JavaScript解释器是用来干嘛的呢? JS解释器包含了词法解析器,句法解析器,字节码生成器,字节码解释器. ...

  • php基础

    一、什么是PHP? 1.超文本预处理器 2.文件名后缀必须是 .php 3.php是由服务器端解释执行。 4.可以...

  • 浅谈 php 变量的实现

    php是如何运行的 php作为一个脚本语言,但不是靠解释器来解释语言。 php代码首先经过zend编译器,将php...

  • php解析器 , 和内核/引擎的关系

    php解析器 = php API + ZEND + ext php 构成 + 外部关系 反向代理(Reverse ...

网友评论

    本文标题:由FindFirstFile()所引发的PHP解释器的神奇解析行

    本文链接:https://www.haomeiwen.com/subject/bhlykftx.html