seccon2015online予選 言い訳大会



SECCON初参加してきました。どの問題も一歩手前までは行った気がしたけど結局解けたのは最初と最後のプチ暗号問題のみでした。つらみ。

さてさて、ざっと問題は以下のとおりでした。(タイトルは適当)

  • Web/Network
    • fragment2
      • pcapファイルが渡された。Wiresharkで開こうとしたらWiresharkが立ち上がらない。(あとで調べたらYosemiteで起動しないのはX11のシンボリックリンクが作成されてないかららしい。悲しい。)
        Ubuntuにうつして再挑戦。ポートをみるとHTTP(80)なのでHTTPリクエストか何かだと思う。「flag is in header」的な文字があったがどれがflagなのかよくわからなかった。撃沈。
    • Connect the server
      • サーバーに接続しろと。とりあえずアドレスが渡されているのでsshで接続。しばらくすると「リモートホストによって接続が閉じられた」との。「ssh -v」でデバッグしながら通信を見てみる。すると、「HINT: It is already in your hands」の文字が。ここで撃沈。(なにか別の形で送られていたのかな。)
  • ステガノグラフィー
    • SECCON WARS
      • スターウォーズEp7公開に乗っかった感じ。スターウォーズのOPぽい動画が流れてきたが、どう考えてもQRコードが埋め込まれてる。この先手も足も出なかった。(何かツール使うのかな)
  • 暗号
    • 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と同様。
  • その他
    • Command-Line Quiz
      • これもサーバーのアドレスが与えられた。telnetで接続しろとのことなのでとりあえず繋いで見る。サーバーのアドレスの中に「caitsith(ケット・シー)」の文字。これはアイルランドの伝説に登場する妖精の猫の名前らしい(→Wikipedia:ケットシー
        サーバーのディレクトリには、stage1.txtからstage5.txt(くらい)のテキストファイルと、flag.txtと書かれたテキストファイルがあった。どうやら、各ステージの問題に答えて、その答えを環境変数として入力すればパーミッションが取れる仕組みのよう。stage1は、「ファイルの頭の行を取るコマンドはなにか」なので、headコマンド。stage2は「ファイルの末尾を取るコマンドはなにか」なので、tail…と思ったらこれでは通らず。ここで撃沈。(fairy taleでお伽話。headは王という意味があるからあながち関係ないわけではなさそうだ。)

 

結局ポイントは、100。惨敗でした…

 

CTFの訓練サイトはどうやらたくさんあるようですね↓

http://stukacoding.blog.fc2.com/blog-entry-116.html

 

やったことあるのはksnctfとHackMeくらいでした。とりあえず一年かけて技術力上げて来年リベンジという感じにしたいと思います。

 

 

Leave a comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です