0%

PHP伪协议

PHP伪协议相关知识点在这里做个记录。

PHP常见的伪协议如下:

file:// 访问本地文件系统
http:// 访问HTTP(s)网址
ftp:// 访问FTP(s)URLs
php:// 访问各个输入/输出流(I/O streams)
zlib:// 压缩流
data:// 数据(RFC 2397)
glob:// 查找匹配的文件路径模式
phar:// PHP归档
ssh2:// Secure Shell 2
rar:// RAR
ogg:// 音频流
expect:// 处理交互式的流

在这里详细说一下这个php://filter

,这个是常用的伪协议,一般用于任意文件读取,有的时候也可以用在getshell,在双off的情况下也可以使用。

在这里举个例子

file=php://filter/read=convert.base64-encode/resource=index.php

关于上面这个,解释一下,首先file关键字的get参数传递,php://是一种协议名称,php://filter/是一种访问本地文件的协议,/read=convert.base64-encode/表示读取的方式是base64编码后,resourse=index.php表示目标文件为index.php。

上面举的常用的伪协议的用法:

1.php伪协议
用法:
php://input,用于执行php代码,需要post请求提交数据。
php://filter,用于读取源码,get提交参数。

?a=php://filter/read=convert.base64/resource=xxx.php
需要开启allow_url_fopen:php://input、php://stdin、php://memory、php://temp
不需要开启allow_url_fopen:php://filter

2.、data协议

用法:
data://text/plain,xxxx(要执行的php代码)
data://text/plain;base64,xxxx(base64编码后的数据)
例:
?page=data://text/plain,
?page=data://text/plain;base64,PD9waHAgc3lzdGVtKCJscyIpPz4=

3.、file协议
用法:
file://[本地文件系统的绝对路径]

制作不易,如若感觉写的不错,欢迎打赏