[ACTF2020 新生赛]Include 1(php://filter伪协议)
题目
做法
启动靶机,点进去
点进去
查看URL,有
?file=flag.php
说明存在文件包含,原理是php://filter 协议
当它与包含函数结合时,php://filter流会被当作php文件执行。
用php://filter
加编码,能让PHP把文件内容当普通文本返回(不执行PHP代码),这样就能拿到文件源码 ,实现任意文件读取。(这也是后面解释为什么要加base64编码的原因)
就是正常包含PHP文件执行时,代码会被执行,我们就看不到我们想要的东西
而通过php://filter,我们就可以把代码当做文本返回,而不是被执行,这样我们就可以得到我们想要的东西了
至此,我们就可以构造payload
file=php://filter/read=convert.base64-encode/resource=flag.php
解释:
1.php://filter - PHP 内置的**数据流过滤器协议**,允许在文件读写时对内容进行转换。 2. **
read=convert.base64-encode** - **过滤器参数**:将读取的文件内容进行 Base64 编码后返回。 3. **
resource=flag.php** - **目标文件**:指定要读取的文件路径(这里是
flag.php`)。
php://filter是格式 **
read** 这里是可选参数,有read和write,字面意思就是读和写,如果不写,那么网页会自动匹配一个合适的read或write **
convert.base64-encode** 是过滤器。主要有四种:字符串过滤器,转换过滤器,压缩过滤器,加密过滤器。filter里可以用一或多个过滤器(中间用|隔开),这也为解题提供了多种方法,灵活运用过滤器是解题的关键。这里的过滤器是把文件flag.php里的代码转换(convert)为base64编码(encode) **
resource` 是必选参数,后面写你要处理的文件名
URL修改后得出结果
复制下来,去解码,这里推荐一个(信息源于互联网,风险自担)
Base64 编码/解码 - 锤子在线工具
得出结果,复制去提交即可
更新
于2025.06.07