本文来自于『代码审计知识星球』2016年11月帖子
https://t.zsxq.com/3rvfia2
说到file_exists,我就想到一个更有意思的问题:
这个问题在很多真实场景下都遇到过,大家也展开了讨论。
当file_exists对/tmp/dont_exists/../../etc/passwd这样的文件名进行判断时,会返回true还是false?
在Windows下,遇到不存在的目录,只需要向上跳转,跳转到已存在的目录下,file_exists就可以返回true;而在Linux下,在遇到第一个不存在的目录时,file_exists就会返回false。
这个特性导致很多畸形文件名导致的漏洞在Linux下无法被利用,很可惜。
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代码审计中,文件操作遇到不存在的目录…
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
点赞
http://cn-sec.com/archives/359960.html
复制链接
复制链接
-
左青龙
- 微信扫一扫
-
-
右白虎
- 微信扫一扫
-
评论