PHP伪协议突破文件包含

PHP伪协议:php支持的协议与封装协议

支持的种类有这12种

* 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://

提供一些杂项的输入/输出流,允许访问PHP的输入输出流,标准输入和错误描述,内存中、磁盘备份的临时文件流以及可以操作其他读取写入文件资源的过滤器。

php://stdin , php://stdout 和 php://stderr

允许直接访问PHP进程相应的输入或输出流。数据流引用了复制的文件描述符,所以如果打开php://stdin并在它之后关了它,仅是关闭了复制品,真正被引用的stdin并不受影响。

推荐简单使用常量STDIN、 STDOUT和STDERR来代替手工打开这些封装器。

php://stdin 是只读的
php://stdout和php://stderr是只写的。
php://filter 可以读取任意文件读取
php://input  读取未经url解码的原始数据

剩下的协议以后做补充:

phar协议 突破文件包含

测试网站代码:test.zip

文件包含漏洞存在于2.php,上传页面为index.php

在上传的位置,只让上传图片类型的文件,在包含的文件后面自动加上“.php后缀”这时可以用%00阶段url,也可以用php伪协议来突破。

php伪协议使用方法:

1,写把一句话木马写进1.php文件
2,右键1.php压缩为1.zip。
3,把1.zip的后缀名改为1.jpg。
4,利用文件读取直接包含。构造的文件读取url为:
http://192.168.150.134/test/2.php?xx=phar://upload/1.jpg/1

成功连接木马

php://filter任意文件读取:

?xxx=php://filter/convert.base64-encode/resource=xxx.php
或者

发表评论

电子邮件地址不会被公开。 必填项已用*标注