IceCTF2016
お久しぶりです。
今回は、IceCTFというCTFの解法を載せていきたいと思います。
Stage1
(1)Hello World!
おなじみの、問題文にあるフラグをフォームに入力し、CTFでの回答方法を確認する問題。(英語が読めればそれでOK。)
A.IceCTF{h3l10_wr0ld}
(2)Spotlight
指定されたページに飛ぶと、マウスカーソルに追従して一部だけ灰色の背景が見えるようなwebアプリが動く。
問題文にある通り、全体をくまなく探しても、フラグは見つからない。
そこで、このページのソースコードを見てみる。
何やら、13行目が怪しいな・・・
見たところ、このアプリケーションのソースコードはspotlight.jsというファイルとしてアップロードされ、実行されているようである。
そこで今度は、このspotlight.jsというファイルがサイトに無いか確認。
発見。
少し長いが、このソースコードを読むと、フラグが見つかった。
それがこれだ。
A. IceCTF{5tup1d_d3v5_w1th_th31r_1095}
(3)All your Base belong to us
リンク先であるflag.txtを読むと、0と1が8桁ずつ、スペースと改行で区切られている文字列が与えられる。
0と1だけということは2進数、そして2進数8桁を変換して、文字列が得られると考えると、このテキストファイルの中身はASCIIコードなのでは?と推測できる。
ということで、今回は以下のサイトを使って変換してみる。
このツールの使い方だが、まず「変換ツール」のプルダウンメニューから、入力するデータの形式を選択する。(今回の場合は「2進数」を選ぶ。)
データの形式の選択とデータの入力が終わったら、
左下の「ASCII→文字列変換」をクリックする。
ただし、このサイトでは2進数8桁ごとに「スペースで」区切らねばならない。先ほどのファイルをそのままコピペして使うと、スペースではなく改行を入れている箇所がいくつかあるので、それをスペースに置き換える作業が必要になる。
では、以上の作業を、先ほどの2進数データに適用してみよう。
変換後のテキストボックスに、フラグが出現した。これがそのまま答えである。
A.IceCTF{al1_my_bases_are_yours_and_all_y0ur_bases_are_mine}
(4)Rotated!
問題文をざっくりと読むと、ROTだけ強調されているのが少し気になる。ROTとは、このブログで何度も扱ってきたシーザー暗号のようなもので、ズラす文字数が3文字とは限らない。
では、問題文をしっかり見ていこう。
5文字ズラした後8文字ズラした、とある。つまり、フラグとなる文字列「VprPGS{jnvg_bar_cyhf_1_vf_3?}」を、13文字ズラせばいいということになる。
では、いつものあのサイトを使って復号していこう。
さて、復号した結果がこれである。
あとはコレの「ICECTF」を「IceCTF」に、他の部分についてはすべて小文字に変更し、数字も問題文そのままのもの(1と3)に戻せば、答えとなる。
A.IceCTF{wait_one_plus_1_is_3?}