1日ひとつだけ強くなる

おべんきょうのーと

AlexCTF: C++ is awesome (Reversing 100)

はじめに

rev一問だけ解けた。初めて100点入れれたので嬉しい。 テスト期間中に息抜き代わりに解いてみたけど、解けて気持ちよくなれたので参加してよかったと思う。

メモとか残してなくて結構時間も経ったので、覚えてることを文章だけ書いて終わる。

やったこと

手元のubuntuで動かなくて(GLIBCのバージョンが足りないって怒られた)、最近セットアップしたLubuntuをつかった。

gdb-pedaの仕様が変わったのか、スタックの中身が見れなくて辛い思いをした。

事前調査

確かstrippedだった気がする。

stringしてみると、

L3t_ME_T3ll_Y0u_S0m3th1ng_1mp0rtant_A_{FL4G}_W0nt_b3_3X4ctly_th4t_345y_t0_c4ptur3_H0wev3r_1T_w1ll_b3_C00l_1F_Y0u_g0t_1t

というなにやら怪しい文字が。

動かしてみる

gdbで動かしてみると、入力文字列を1文字ずつ比較しているみたいだ。 横着な性格なので比較しているところにブレークポイントをセットしてgdbパカパカしてたら途中でyou should know flagって言われてしまった….

ので、ちゃんと見てみると上の文字列から数字の配列の順に取り出して比較してるらしい。 配列の中身を見て、そのindexにある文字を取り出すとフラグが取得できる。

ALEXCTF{W3_L0v3_C_W1th_CL45535}