XCTF-web-file_include
根据题目描述应该是一个文件包含的题目,访问主页面

需要传入filename的参数,尝试使用php://filter协议读取check.php文件的内容
?filename=php://filter/read/=convert.base64-encode/resource=check.php

经过一些测试,得到过滤了php://filter/read和base64,这里无法使用php://filter/read协议了
我又测试了data://协议和php://input协议,都没有成功,在网上查找资料
因为php://filter协议可以使用,在网上查找到了convert.quoted-printable-encode这个方法也可以读取
尝试后发现quoted这个单词也被过滤了,但是还有下方还有另一个方法
convert.iconv.*方法:格式位:convert.iconv.<input-encoding>.<output-encoding>或者convert.iconv.<input-encoding>/<output-encoding>
其中input-encoding和output-encoding有很多编码,详细可以看探索php伪协议以及死亡绕过
因为我们中文常用的方式是utf-8,所以input-encoding选择UTF-8*,然后output-encoding随便选择一个,浏览器显示正常解析即可
我测试了这几个可以正常解析:UCS-4*、UCS-4LE*、UCS-2、UCS-2LE、UTF-32*、UTF-32LE*、UTF-16*可以正常解析,还有很多可以自己尝试
传入payload
?filename=php://filter/convert.iconv.UTF-8*.UCS-4LE*/resource=check.php

可以看到check.php过滤的内容,/base|be|encode|print|zlib|quoted|write|rot13|read|string/i,不过已经不重要的
该题目没有提示flag文件的位置,尝试包含常见的flag.php
?filename=php://filter/convert.iconv.UTF-8*.UTF-16*/resource=flag.php
成功得到flag


浙公网安备 33010602011771号