当我们的网址为“网址+/include.php?page=“或者“网址+/include.php?file=“,总之就是网址有文件包含
我们可以利用“网址+/include.php?page=php://filter/read=convert.base64-encode/resource=include.php“
来读取我们当前的页面代码,用base64解码来读取。
这是一个file关键字的get参数传递,
php://是一种协议名称,php://filter/是一种访问本地文件的协议,
/read=convert.base64-encode/表示读取的方式是base64编码后,
resource=include.php表示目标文件为include.php。
对php://filter的解析
名称 | 描述 |
---|---|
resource=<要过滤的数据流> | 这个参数是必须的。它指定了你要筛选过滤的数据流。 |
read=<读链的筛选列表> | 该参数可选。可以设定一个或多个过滤器名称 |
write=<写链的筛选列表> | 该参数可选。可以设定一个或多个过滤器名称 |
<;两个链的筛选列表> | 任何没有以 read= 或 write= 作前缀 的筛选器列表会视情况应用于读或写链。 |
通过数据流访问
直接「读取」数据源的内容,resource 参数必须位于 php://filter 的末尾,并指定需要过滤筛选的数据流。
<?php
# 指定源文件,实际上没有应用过滤,会直接输出 http://www.baidu.com网页的内容
# 等同于readfile('http://www.baidu.com');
readfile('php://filter/resource=http://www.baidu.com');
通过base64编码获取源码显示到页面中
/include.php?file=php://filter/read=convert.base64-encode/resource=include.php
//后面的php看情况加或者不加
有时不加read也可以显示,在加read不显示的情况下尝试
/setu.php?file=php://filter/convert.base64-encode/resource=setu
持续更新中!!!