php 伪协议
一、前言:
经常遇到php伪协议,特别是CTF比赛,还有一些线下的比赛,这里我系统的总结一下。
二、概念:
php伪协议一共有12种。
伪协议|描述
:–:|:–:|–
file://|访问本地文件系统
http://|访问http(s)网址
ftp://|访问ftp(s)urls
php://|访问各个输入输出流
zlib://|压缩包
data://|数据
glob://|查找匹配的文件路径模式
phar://|php归档
ssh2://|secure shell 2
rar://|RAR
ogg://|音频流
expect://|处理交互的流
三、实现:
1、php://
php://stdin、php://stdout 和 php://stderr 允许直接访问 PHP 进程相应的输入或者输出流。
php://stdin是只读的,php://stdout 和 php://stderr 是只写的。
…
2、php://input
php://output 是一个只写的数据流, 允许你以 print 和 echo 一样的方式 写入到输出缓冲区。
3、php://fd
php://fd
4、php://memory和php://temp
php://memory 和 php://temp 是一个类似文件 包装器的数据流,允许读写临时数据。 两者的唯一区别是 php://memory 总是把数据储存在内存中, 而 php://temp 会在内存量达到预定义的限制后(默认是 2MB)存入临时文件中。 临时文件位置的决定和 sys_get_temp_dir() 的方式一致。
php://temp 的内存限制可通过添加 /maxmemory:NN 来控制,NN 是以字节为单位、保留在内存的最大数据量,超过则使用临时文件。
5、php://input
1)访问只读流
php://input 是个可以访问请求的原始数据的只读流。因为它不依赖于特定的 php.ini 指令。
1 | ?file=class.php&pass=&user=php://input |
注:enctype=”multipart/form-data” 的时候 php://input 是无效的。
2)获取路径:
3)查看phpinfo()
4)写入shell
6、php://filter
(1)查看源码
1 | file=php://filter/read=convert.base64-encode/resource=class.php |
1)加密解密
convert.base64-encode & convert.base64-decode
2)其他转换
string.rot13
进行rot13转换 string.toupper
将字符全部大写 string.tolower
将字符全部小写 string.strip_tags
(2)写入代码
1 | php://filter/write=convert.base64-decode/resource=shell.php |
7、zip://,bzip2://,zlib://
直接访问压缩包里的文件。
1)zip://
1 | zip://绝对路径+文件.zip |
将phpinfo.txt压缩成zip,实战中可以改后缀为jpg绕过上传限制。
1 | ?file=zip://C:/phpStudy/PHPTutorial/WWW/lsawebtest/phptest\phpinfo.jpg%23phpinfo.txt |
注意要用绝对路径+url编码#
2)bzip2://
1 | bzip2://绝对路径+文件.zip |
3)zlib://
1 | zlib://绝对路径+文件.zip |
或者,zip:// [压缩文件绝对路径]#[压缩文件内的子文件名],compress.zlib://
1 | ?file=compress.zlib://C:/phpStudy/PHPTutorial/WWW/lsawebtest/phptest/phpinfo.txt.gz |
改后缀为jpg亦可,相对路径亦可。
8、data://
data:text//plain
1 | file=data:text//plain,<?php phpinfo();?> |
9、file://
1 | ?page = file://../../../../flag.txt |
10、ftp://
1 | ?page = ftp://+ip+文件 |
四、总结
php://filter/read=convert.base64-encode/resource=class.php
五、参考:
https://blog.csdn.net/szuaurora/article/details/78141126
https://www.freebuf.com/column/148886.html
https://blog.dyboy.cn/websecurity/28.html