CTF for ビギナーズ Finalに参加しました(感想+Write up)

Outline

初CTF(at セキュリティ・キャンプ2016)以来、CTFに興味があったのでCTF for ビギナーズ FINALに参加してきました。

2016.seccon.jp

午前中から昼過ぎまでWeb、Forensics、Binaryについての講義が行われ、最後に参加者全員でCTFを行いました。 今回のCTFは初の400人規模のCTFとのことで、独特の雰囲気だったことを覚えています。。 このCTFは講義の復習+αのような内容で、難しくも楽しかったです。

私が解けた問題は以下の通りです。 f:id:je6bmq:20170130210532p:plain

Webの「もぐもぐ」問題、Forensicsの「あけてみよう」問題、Binaryの「HiddenFlag」問題は今思うとあと1歩で解くことができたような(気がする)問題だったので、悔しい限りです。
後でちゃんと解こうと思います。

以降、Write upです。

Write up

スクリーンショットの撮り忘れにより、(特にWebの)情報量が少ないことをお許しください。 また、フラグの形式はctf4b{文字列}です。

Web

Classical Injection

フォームに' OR 1=1を入力すると、フラグが表示されました。

(講義中で「もっとも単純なインジェクションの1つです」のような話があったような・・・?)

May the extensions be with you.

提示されたURLを開くと、「あなたは管理者(admin)ではない」(曖昧)といったメッセージが表示されており、問題から、ブラウザの拡張機能を使用すればよいのでは?と想像しました。

演習環境のブラウザ(Chrome)には、EditThisCookieという拡張機能があり、Cookieの値を参照、変更することができるため、使用してみると、admin(といった名前)のCookiefalseの値を持っていることが確認できました。

そこで、この値をtrueに変更し、リロードするとフラグが表示されました。

Forensics

みつけてみよう

与えられたpcapファイルをWiresharkで開いて、パケットの統計(Packet Hierarchy)を見ると、以下のようにHTTPでいくつかパケットが飛んでいることが分かりました。

f:id:je6bmq:20170130213953p:plain

これらのパケットを眺めていると、無数のctf4b{}の文字が。
そこで、Wiresharkのフィルタリング機能でframe matches "ctf4b"とすると、フラグが出てきました。
正規表現で検索するなど、より理論的な解法は多々あるかと思われる)

Binary

復習

2つのセクションのアセンブリの処理を追った結果得られる最終的なeaxの値を"_(アンダーバー)"で結合したものをフラグとする、といった問題でした。

1つ目のセクションではeaxの初期値を3として、8倍したあと、3を引き、さらに2を足す、といった処理をしていたので、最終的なeaxの値は23となったと思います。

2つ目のセクションでは、ループのインデックスが1から5まで増加する計5回のループ中に、毎回eaxに対してループインデックスが乗算されるような挙動に思えたため、5の階乗、つまり120が得られ、

ctf4b{23_120}

をsubmitした結果通ったと思います。
アセンブリのファイルが手元になく、曖昧さが大きいです)