アレイドのブログ(勉強会等用)

CTFのWriteup(解法)や、その他勉強会の参加記などを載せていきます。

IceCTF2016

お久しぶりです。

今回は、IceCTFというCTFの解法を載せていきたいと思います。

 

Stage1

(1)Hello World!

 おなじみの、問題文にあるフラグをフォームに入力し、CTFでの回答方法を確認する問題。(英語が読めればそれでOK。)

A.IceCTF{h3l10_wr0ld}

 

(2)Spotlight

 指定されたページに飛ぶと、マウスカーソルに追従して一部だけ灰色の背景が見えるようなwebアプリが動く。

 問題文にある通り、全体をくまなく探しても、フラグは見つからない。

 そこで、このページのソースコードを見てみる。

f:id:melt39miku:20160814034303p:plain

何やら、13行目が怪しいな・・・

見たところ、このアプリケーションのソースコードはspotlight.jsというファイルとしてアップロードされ、実行されているようである。

そこで今度は、このspotlight.jsというファイルがサイトに無いか確認。

f:id:melt39miku:20160814034700p:plain

発見。

少し長いが、このソースコードを読むと、フラグが見つかった。

それがこれだ。

f:id:melt39miku:20160814034937p:plain

A. IceCTF{5tup1d_d3v5_w1th_th31r_1095}

 

(3)All your Base belong to us

リンク先であるflag.txtを読むと、0と1が8桁ずつ、スペースと改行で区切られている文字列が与えられる。

f:id:melt39miku:20160815041644p:plain

0と1だけということは2進数、そして2進数8桁を変換して、文字列が得られると考えると、このテキストファイルの中身はASCIIコードなのでは?と推測できる。

ということで、今回は以下のサイトを使って変換してみる。

ASCIIコード変換機

このツールの使い方だが、まず「変換ツール」のプルダウンメニューから、入力するデータの形式を選択する。(今回の場合は「2進数」を選ぶ。)

データの形式の選択とデータの入力が終わったら、

左下の「ASCII→文字列変換」をクリックする。

ただし、このサイトでは2進数8桁ごとに「スペースで」区切らねばならない。先ほどのファイルをそのままコピペして使うと、スペースではなく改行を入れている箇所がいくつかあるので、それをスペースに置き換える作業が必要になる。

 

では、以上の作業を、先ほどの2進数データに適用してみよう。

f:id:melt39miku:20160815041721p:plain

変換後のテキストボックスに、フラグが出現した。これがそのまま答えである。

A.IceCTF{al1_my_bases_are_yours_and_all_y0ur_bases_are_mine}

 

(4)Rotated!

問題文をざっくりと読むと、ROTだけ強調されているのが少し気になる。ROTとは、このブログで何度も扱ってきたシーザー暗号のようなもので、ズラす文字数が3文字とは限らない。

では、問題文をしっかり見ていこう。

f:id:melt39miku:20160815054128p:plain

5文字ズラした後8文字ズラした、とある。つまり、フラグとなる文字列「VprPGS{jnvg_bar_cyhf_1_vf_3?}」を、13文字ズラせばいいということになる。

 

では、いつものあのサイトを使って復号していこう。

暗号生成ツール - 暗号くん

f:id:melt39miku:20160815054521p:plain

さて、復号した結果がこれである。

あとはコレの「ICECTF」を「IceCTF」に、他の部分についてはすべて小文字に変更し、数字も問題文そのままのもの(1と3)に戻せば、答えとなる。

A.IceCTF{wait_one_plus_1_is_3?}