开启场景
它包含了一个 check.php 估计是对用户传入值进行一个检查的文件,然后就是直接进行文件包含了。Flag 一般都是藏在 flag.xxx 文件中的,当然不乏改名的。我们在进行文件包含之前,先定位一下 Flag 文件的位置(这里可以使用工具扫,但没必要)。直接访问 /flag.php 文件,结果返回为空(因为不是 404,证明确实存在该文件)
尝试进行文件包含,直接包含 flag.php 的话,内容肯定会和我们直接访问一样,显示为空,所以我们需要对 flag.php 内容进行编码后再进行包含。
本关考察的 PHP 伪协议是 php://filter,使用的过滤器是 convert.iconv.*,你可以理解为使用 iconv() 函数处理所有的输入输出流。convert.iconv.* 过滤器使用方法有如下两种:
convert.iconv.<input-encoding>.<output-encoding>
or
convert.iconv.<input-encoding>/<output-encoding>
其中 <input-encoding>
与 <output-encoding>
就是编码的方式,PHP 支持的字符编码可以从 PHP 官网获取(PHP: Supported Character Encodings - Manual)
payload 为:
?filename=php://filter/convert.iconv.<input-encoding>.<output-encoding>/resource=flag.php
用Burp 抓包然后发到 intruder 进行 PHP 字符编码爆破
cyberpeace{30fbda98f13899dac046cc671d1c7681}