1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[writeup] picoCTF "Cookies"

Posted at

今回の問題

picoCTFより"Cookies"を解いていきます。

実際に解いていく

1. 問題文にあるWebサイトに移動する

Cookies"_1.png
今回はクッキーの名前を入力する問題のようです。
ソースコードを読みましたが、特に怪しいところはありませんでした。

2. 適当な答えを入力してみる

Cookies"_2.png
Cookies"_3.png
不正解を入力すると、画面上に赤色のメッセージが表示されました。
「snickerdoodle」を入力すると、画面上に緑色のメッセージが表示されました。
つまり、何かが状態を持っているということですね。その何かが、今回のWebページの変化を操作していると考えられます。

3. Cookieの値を見てみる

Cookies"_4.png
Cookies"_5.png
入力した答えの正解・不正解によってCookieのValueの値が変化していることがわかります。
不正解の場合は、Valueが「-1」。
snickerdoodleの場合は、Valueが「0」。

今回のWebページの変化を操作している何かとは、Cookieのことでした。

それでは、BurpSuiteを使用して、さまざまなCookieのValueを試していきたいと思います。

4. BurpSuiteを使用してCookieの値を色々変えてみる

Cookies"_6.png

BurpSuiteを使用して、CookieのValueを1~20まで試してみました。
すると、Valueが18の時だけLengthが極端に小さくなっているのを発見!
そこで、CookieのValueが18のときのレスポンスを見ると...
FLAGを発見しました!これにてFLAG獲得です!お疲れ様でした。

もう少し考えてみる

今回はCookieの値を変えることでFLAGを獲得することができました。しかし、「そうだっ!Cookieの値を変えてみたらどうだろう?」という発想はどこから浮かぶのか。ChatGPTと個人面談しながら考えてみました。
その結果、以下の要素が挙げられます。

・問題名によるヒント
→今回の問題名は "Cookies" です。明らかですね。

・Cookieがレスポンスで設定されている
→レスポンスにCookieが含まれているかは、Webインスペクタでもすぐに確認することができます。

・Cookieの名前が人間が読めるものになっている
→例:name=0, admin=false など。

・入力に対して反応がないorフォームがない(少ない)
→フォームが少ない、何をしても結果があまり変わらない→となると、何を基準に判断しているのか?→Cookieでは?

・HTMLやJavaScriptにヒントがない
→ソースコードを見てもヒントがない。JavaScriptも特に仕事をしていない→サーバー側に何かあるのではないか?→リクエスト周辺を見てみる→Cookieも対象に含まれる

・ページ遷移やボタンでCookieが変化する
→何かをクリックしたらCookieの値が変化した→値が切り替わるということは、その値に何か意味があるはず

以上です。
思考の過程を言語化することで、少しだけ頭の中にあった「なんで?」というモヤモヤが解消された気がします。

まとめ

今回の問題は、Cookieの値を改ざんすることでFLAGを獲得することができました。

補足

・サーバー側のロジックは見えるのか?
→見ることはできません。なぜなら、サーバー側のコードは「サーバーの中だけに存在」し、ユーザーには送られないからです。
逆に、ユーザーの見ることができるものは、HTML、CSS、JavaScriptやCookie、通信内容(例:リクエスト、レスポンス)などがあります。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?