(sCTF2016Q1)Secure Text Saver(60)
点数の低い問題から解いているのだけど、そろそろ解けない難易度になってきた。
そんな中、Binary/PWNについては、高得点の問題もなぜか正解数が多い。
というわけで試しにBinary問題を解いてみると、本当に簡単だった。
与えられた実行ファイルを実行すると、、、
適当にSignUpすると、任意のテキストを保存できる。
問題の意図からして、特定ユーザが保存したテキストを見つける問題らしい。
しかし、自分で保存したアカウントとテキストは、再起動すると消えてしまう。
ということは、ハードコーディングされたプログラムのなかで、どこかでDBにテキストが書き込まれているはず。
方針が定まったので、解析開始。ものはjarファイルなので、jarのdisassemblerを探す。
(なぜかdecompilerばかりhitした)
最初にヒットした↓は、一番肝心なloginパネルがエラーとなっており使えず
次にヒットしたのがオンラインデコンパイラ
これがとても優秀で、loginパネル部分が見事にデコンパイルされている。
怪しいのが以下の部分
public static void write() { byte[] arr = new byte[]{115, 99, 116, 102, 123, 119, 48, 119, 95, 116, 104, 52, 116, 95, 119, 52, 53, 95, 112, 114, 51, 55, 55, 121, 95, 101, 52, 53, 121, 125}; accounts.get(0).addText(new String(arr)); } }
というわけで、これをアスキーコード変換するとフラグでした。