首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以绕过"file_exists()“(RFI,LFI)?

是否可以绕过"file_exists()“(RFI,LFI)?
EN

Stack Overflow用户
提问于 2015-09-12 21:09:04
回答 2查看 2.8K关注 0票数 0

我的web应用程序中有以下代码:

代码语言:javascript
复制
$data = "dir/files/".$_GET['f'].".pdf";

下面几行代码:

代码语言:javascript
复制
if(file_exists($data)){
    include($data);

攻击者可以绕过它来利用我系统上的RFI吗?还是仅限LFI?

EN

回答 2

Stack Overflow用户

发布于 2015-09-12 21:31:25

您必须对用户输入进行清理!即使他们只能访问PDF文件,您仍然不能确保他们只能访问位于您指定的目录中的文件。

考虑输入../../../siteB/dir/files/secure。使用您当前的代码,他们访问的是/var/www/siteB/dir/files/secure.pdf,而不是/var/www/siteA/dir/files/secure.pdf

一种方法是只获取输入字符串的最后一位(没有任何前导路径部分)。

代码语言:javascript
复制
$file = basename($_GET['f']);

这会将../../../siteB/dir/files/secure转换为secure。这显然只是一个部分的解决方案。其他测试,例如,如果他们输入一个空字符串或您认为无效的字符,会发生什么情况。

票数 0
EN

Stack Overflow用户

发布于 2018-07-11 12:20:09

在同一目录下:

test.php

代码语言:javascript
复制
    <?
       if(file_exists($page)){
          echo("Sorry the local page is protected");
       }else{
          include($page);
    }?>

file.txt

代码语言:javascript
复制
  Hello Word

输入:http://www.example.com/test.php?page=file.txt结果:对不起,本地页面受保护

输入:http://www.example.com/test.php?page=./foo/../file.txt结果: Hello Word

绕过了函数file_exists()

来源:http://seclists.org/fulldisclosure/2004/Feb/82

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32539208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档