saotake’s blog

-竿竹-

(sCTF2016Q1)Secure Text Saver(60)

点数の低い問題から解いているのだけど、そろそろ解けない難易度になってきた。

そんな中、Binary/PWNについては、高得点の問題もなぜか正解数が多い。

というわけで試しにBinary問題を解いてみると、本当に簡単だった。

 

与えられた実行ファイルを実行すると、、、

f:id:saotake:20160413202311p:plain

適当にSignUpすると、任意のテキストを保存できる。

f:id:saotake:20160413202350p:plain

 

問題の意図からして、特定ユーザが保存したテキストを見つける問題らしい。

しかし、自分で保存したアカウントとテキストは、再起動すると消えてしまう。

ということは、ハードコーディングされたプログラムのなかで、どこかでDBにテキストが書き込まれているはず。

 

方針が定まったので、解析開始。ものはjarファイルなので、jarのdisassemblerを探す。

(なぜかdecompilerばかりhitした)

最初にヒットした↓は、一番肝心なloginパネルがエラーとなっており使えず

f:id:saotake:20160413202113p:plain

次にヒットしたのがオンラインデコンパイラ

www.javadecompilers.com

これがとても優秀で、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));
    }
}

というわけで、これをアスキーコード変換するとフラグでした。