PHP伪协议总结
目录
1、file://协议
什么是File:
如何使用File:
PHP.ini:
2、php://协议
条件:
2.1php://filter
2.2php://input
3、zip://, bzip2://, zlib://协议
PHP.ini:
3.1zip://协议
使用方法:
3.2bzip2://协议
使用方法:
3.3zlib://协议
使用方法:
4、data://协议
PHP.ini:
5、总结
1、file://协议
本地文件传输协议
什么是File:
File协议主要用于访问本地计算机中的文件,就如同在Windows资源管理器中打开文件一样。
如何使用File:
要使用File协议,基本的格式如下:file:///文件路径,比如要打开F盘flash文件夹中的1.swf文件,那么可以在资源管理器或浏览器地址栏中输入:file:///f:/flash/1.swf回车
PHP.ini:
file:// 协议在双off的情况下也可以正常使用;
allow_url_fopen :off/on
allow_url_include:off/on
2、php://协议
条件:
不需要开启allow_url_fopen,仅php://input、 php://stdin、 php://memory 和 php://temp 需要开启allow_url_include。
php:// 访问各个输入/输出流(I/O streams),在CTF中经常使用的是php://filter和php://input,php://filter用于读取源码,php://input用于执行php代码。
2.1php://filter
读取源代码并进行base64编码输出,不然会直接当做php代码执行就看不到源代码内容了。
PHP.ini:
php://filter在双off的情况下也可以正常使用;
allow_url_fopen :off/on
allow_url_include:off/on
2.2php://input
可以访问请求的原始数据的只读流, 将post请求中的数据作为PHP代码执行。
PHP.ini:
allow_url_fopen :off/on
allow_url_include:on
3、zip://, bzip2://, zlib://协议
PHP.ini:
zip://, bzip2://, zlib://协议在双off的情况下也可以正常使用;
allow_url_fopen :off/on
allow_url_include:off/on
zip://, bzip2://, zlib:// 均属于压缩流,可以访问压缩文件中的子文件,更重要的是不需要指定后缀名。
3.1zip://协议
使用方法:
zip://archive.zip#dir/file.txt
zip:// [压缩文件绝对路径]#[压缩文件内的子文件名]
3.2bzip2://协议
使用方法:
compress.bzip2://file.bz2
3.3zlib://协议
使用方法:
compress.zlib://file.gz
注意:bzip2://和zlib://只能在Linux环境下使用,windows环境下无法使用!!!
4、data://协议
PHP.ini:
data://协议必须满足双on才能正常使用;
allow_url_fopen :on
allow_url_include:on
注意:这种方法基本不可能实现,必须满足双on才能正常使用。这种条件太过苛刻!!!
5、总结
PHP封装协议在CTF蛮常见的,是经常会遇到的出题点,以下是这篇文章的总结,希望能够帮助到大家