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

  • A+
所属分类:代码审计
本文来自于『代码审计知识星球』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代码审计中,文件操作遇到不存在的目录…

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: