PHP伪协议

file://协议

用于访问本地文件系统,在CTF中通常用来读取本地文件的且不受allow_url_fopen与allow_url_include的影响。 include()/require()/include_once()/require_once()参数可控的情况下,如导入为非.php文件,则仍按照php语法进行解析,这是include()函数所决定的。

条件

allow_url_fopen:off/on

allow_url_include :off/on

用法

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

http://127.0.0.1/include.php?file=file://E:\phpStudy\PHPTutorial\WWW\phpinfo.txt
[文件的相对路径和文件名]

http://127.0.0.1/include.php?file=./phpinfo.txt
[http://网络路径和文件名]

http://127.0.0.1/include.php?file=http://127.0.0.1/phpinfo.txt

php://协议

php:// 访问各个输入/输出流(I/O streams),在CTF中经常使用的是php://filter和php://input,php://filter用于读取源码,php://input用于执行php代码。

php://filter/read=convert.base64-encode/resource=[文件名]
读取文件源码(针对php文件需要base64编码)

php://input + [POST DATA]执行php代码

[POST DATA部分]

zip:// & bzip2:// & zlib:// 协议

zip:// & bzip2:// & zlib:// 均属于压缩流,可以访问压缩文件中的子文件,更重要的是不需要指定后缀名,可修改为任意后缀:jpg png gif xxx 等等。


posted @ 2021-02-02 15:07  paidx0  阅读(25)  评论(0编辑  收藏  举报