SECCON初参加してきました。どの問題も一歩手前までは行った気がしたけど結局解けたのは最初と最後のプチ暗号問題のみでした。つらみ。
さてさて、ざっと問題は以下のとおりでした。(タイトルは適当)
- Web/Network
- fragment2
- Connect the server
- ステガノグラフィー
- 暗号
- Start SECCON CTF
- 3つ平文と暗号文が出ていた。一文目に「A~Z{}」がどれに置き換わるかが書いてあったから、それみてプログラム組んでただ置き換えるだけ。
- UnZip
- パスワードのかかったZipファイルが渡されて、これをとけということ。どっかで見たことはあったが解答には至らず。とりあえずバイナリを覗いてみたら中に入っているファイルしかわからなかった。
- android apk リバースエンジニアリング 1
- apkファイルが渡された。どうやらじゃんけんに1000回勝って出力されたものがflagっぽい?apkはjarベースのzip形式というのを以前きいたので、とりあえず拡張子をzipに変え解凍。class.dexをdex2jarを使ってclass.jarに。出てきたjarをJD-GUIで覗いてみた。 1000回勝つと実行されるコードがあったが、ここでさらにcalc()という謎の関数を呼んでいる。どうやらcのライブラリをnativeメソッドとして呼び出していた。おそらくlibフォルダの中にある「libcalc.so」に関数の挙動が記されているのかな。 とりあえずlibcalc.soを仮想環境のUbuntuにうつして解析しよう。この辺りで手が止まった。(アセンブリ読めぬ)
- Last Challenge
- Start SECCON CTFと同様。
- Start SECCON CTF
- その他
- Command-Line Quiz
- これもサーバーのアドレスが与えられた。telnetで接続しろとのことなのでとりあえず繋いで見る。サーバーのアドレスの中に「caitsith(ケット・シー)」の文字。これはアイルランドの伝説に登場する妖精の猫の名前らしい(→Wikipedia:ケットシー) サーバーのディレクトリには、stage1.txtからstage5.txt(くらい)のテキストファイルと、flag.txtと書かれたテキストファイルがあった。どうやら、各ステージの問題に答えて、その答えを環境変数として入力すればパーミッションが取れる仕組みのよう。stage1は、「ファイルの頭の行を取るコマンドはなにか」なので、headコマンド。stage2は「ファイルの末尾を取るコマンドはなにか」なので、tail...と思ったらこれでは通らず。ここで撃沈。(fairy taleでお伽話。headは王という意味があるからあながち関係ないわけではなさそうだ。)
- Command-Line Quiz
結局ポイントは、100。惨敗でした…
CTFの訓練サイトはどうやらたくさんあるようですね↓
http://stukacoding.blog.fc2.com/blog-entry-116.html
やったことあるのはksnctfとHackMeくらいでした。とりあえず一年かけて技術力上げて来年リベンジという感じにしたいと思います。