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

本文来自于『代码审计知识星球』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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值