PHP代码审计中,文件操作遇到不存在的目录…

admin 2021年8月16日23:13:29评论69 views字数 596阅读1分59秒阅读模式
本文来自于『代码审计知识星球』2016年11月帖子
https://t.zsxq.com/3rvfia2


前情提要,有同学提到如下特性:

PHP代码审计中,文件操作遇到不存在的目录…


说到file_exists,我就想到一个更有意思的问题:


PHP代码审计中,文件操作遇到不存在的目录…


这个问题在很多真实场景下都遇到过,大家也展开了讨论。


当file_exists对/tmp/dont_exists/../../etc/passwd这样的文件名进行判断时,会返回true还是false?


答案如下:


PHP代码审计中,文件操作遇到不存在的目录…


在Windows下,遇到不存在的目录,只需要向上跳转,跳转到已存在的目录下,file_exists就可以返回true;而在Linux下,在遇到第一个不存在的目录时,file_exists就会返回false。


这个特性导致很多畸形文件名导致的漏洞在Linux下无法被利用,很可惜。


当然,也有小伙伴提到了一些对这个特性的深入研究:


PHP代码审计中,文件操作遇到不存在的目录…
分享出来:


https://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs.git/tree/Documentation/filesystems/path-lookup.txt
https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file


PHP代码审计中,文件操作遇到不存在的目录…

点击下方“阅读原文”查看这个原始帖子☺


本文始发于微信公众号(代码审计):PHP代码审计中,文件操作遇到不存在的目录…

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年8月16日23:13:29
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   PHP代码审计中,文件操作遇到不存在的目录…http://cn-sec.com/archives/359960.html

发表评论

匿名网友 填写信息