首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用file_get_contents()

利用file_get_contents()
EN

Stack Overflow用户
提问于 2018-01-27 08:36:01
回答 3查看 13.1K关注 0票数 2

是否可以在以下脚本中从服务器读取任何文件(不仅仅是扩展名为.html的文件)?

代码语言:javascript
复制
<?php
echo file_get_contents($_GET['display'].'.html');
?>

我知道包装器(php://file://等)但没有取得多大成就。

我很想听听所有可能的攻击信号。

PHP是默认的:allow_url_fopen On,让我们假设版本是>= 7.0,所以空字符%00不能工作。

EN

回答 3

Stack Overflow用户

发布于 2018-01-27 08:47:01

不,这只会读取以‘..html’结尾的文件,但这并不一定意味着它是安全的!一般来说,你越能净化和限制输入,越好。

另外,对于任何打算像这样使用file_get_contents的人来说,记住从file_get_contents提供服务时,您可以提供通常无法访问的文件--或者是由于服务器配置(例如.htaccess ),或者是文件权限。

票数 1
EN

Stack Overflow用户

发布于 2018-01-27 09:20:06

正如@David所说,这只会得到以‘..html’结尾的文件,但这不是一个好做法,如果您有html文件夹,并且希望用户只从该文件夹获取文件,则不应该这样做,通过使用这种方法,黑客可以访问服务器中的任何.html文件,而不仅仅是您希望他看到的文件。

我的建议是,如果您有一个希望用户能够从其中获取文件的特定文件夹,请扫描目录并检查文件名。

下面是一个例子:

代码语言:javascript
复制
<?php 

$paths = scandir('/html');

$file  = isset($_GET['display']) : $_GET['display'] ? null;

if(!$file) 
{
 die('no display provided');
}

$html = '';

foreach($paths as $path) {

   if($path !== '.' && $path !== '..' && $path === $file.'.html') {
     $html = file_get_contents($path);
   }
  
}


echo $html;

?>
票数 1
EN

Stack Overflow用户

发布于 2018-11-14 21:33:21

作为代理人的开发:

http://example.com/script.php?display=https://hackme.com/passwords%3Extension%3D

代码语言:javascript
复制
echo file_get_contents("https://hackme.com/passwords?Extension=.html")

您的IP将登录在hackme.com机器上,并返回一些密码(当幸运的时候)。

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

https://stackoverflow.com/questions/48474048

复制
相关文章

相似问题

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