ひよこになりたい

Programming Server Network Security and so on

SECCON2013全国大会に出場しました

SECCON全国大会に出場してきました。

ということで私が解くことができた問題のWriteupをしたいと思います。

今回、私が回答を提出した問題は0問でした。

以下、提出した問題のWriteupです。



・・・という冗談はさておき。

SECCON2013全国大会に出場してきました!

20140301_122919in 東京電機大学。会場も大学自体もすごくキレイで、さすが私大だなぁと・・・羨ましい。駅にも近いし周りは色々なものがあるしいい場所です。

地方大会ではJeopady方式(問題を解いてFLAGを手に入れる)ですが、本戦では攻防戦。自分のチームのFLAGを書き込み続ければその分点数どんどん増えていく感じです。

出場チームは地方大会とOnline予選を通過した強豪ばかり。会場の顔ぶれもすごい。

DSC01166sこんなかんじで挑みました。MacBook Airdynabook(Win8.1)。メインで使用するのはMBAです。

各チームのテーブルにはルーターとコンセント(3つ)があり、そこに接続して問題サーバーに接続するといった感じになってました。(http://2013.seccon.jp/seccon2013finalchallenge.html

周りは手慣れた様子で着々と用意を進めてました。(こわい)

会場モニタにはネットワーク可視化システム、NIRVANA改が動いていました。(写真撮り忘れていた。。。)

図2 NIRVANA改 SECCONカスタム(Towerモード)

イメージはhttp://www.nict.go.jp/info/topics/2014/02/140228-1.htmlより

かっこいい!!パケットの飛びがすごくわかりやすかったです。

nmapでスキャンしたりすると、パケットの点がズラーっと連なって飛んで行く様子が見て取れます。TCP, UDPどちらもわかるようになっているみたいです。私の家にも欲しいなぁ()w

隣のチームへのパケットも表示されるので運営側は不正行為を見つけやすい(?)ので非常に良いシステムだと思います。中の人とも軽くお話させてもらいましたが、このシステムを作るのに非常に苦労したようで・・・。

競技者側からのNIRVANA改への意見・視点を参考にしたいとおっしゃってました。(ただ私は競技に集中していたのでNIRVANA改を見る余裕があまりありませんでした。一度観客側からどんな感じか見たいものです)

問題を解いた感想など

私は参加はしたものの、Key提出までには至らずWriteupを書く人権がないのですが(足引っ張ってしまい非常に申し訳ないです)気づいた点などをメモしておきます。

次回参加できれば今回の全国大会の経験を活かして点数獲得したいな。

問題について

予選と違い、与えられる問題は実際の攻撃に近い形で与えられるので、ノーヒントです。分類やタイトルなども与えられないため、問題サーバーに接続しただけではどのジャンルなのかも分からない状態でした。

また、復号問題が大半で、なかなか取っ掛かりを見つけることが難しかったです。

やったことなど簡単に書きますがWriteupではないので、解法がほしい方は他のサイトを見るといいです。

karin.tower

Web系の問題。クッキーを覗いたり、取得できるディレクトリを探しまわっていましたが、なにも解けませんでした。

フォームに色々入れて、Mailaddressの入力フォームにXSSできることがわかりました。それだけでした。というのも、/image/の中に、captchaSt1.cgiやKey.jpg, Key2.jpg, /nothinghereディレクトリなど意味深なものが大量にあったのでそこの解析を重点的にやってしまったのです。。

Adminページがあることと、CookieCGIのSESSIONIDがあったので、どこかで使うのだろうと考えていたのですが、XSSでAdminのSESSIDを奪うなどという事は考えても見なかったです。終わったあとに考えてみれば、確かに管理人に対してメールを送るフォームであるから、AdminのSESSIDをXSSで奪えるよなぁ。

そこが解けないと次に行くのは無理みたいなので、解けたチームはどんどんKeyを獲得して、逆に解けなかったチームは全然得点を得ることが出来ないということに。悔しい。

2.kaku.tower

通天閣タワー。どんな問題か忘れかけてる程度には手も足も出なかったバイナリ系の問題。

シェルコードをうにゅうにゅする問題みたいですがバイナリ系は全くわからないので投げました。

バイナリを勉強する予定なので、問題来たら解けるようになりたいな。

Pisa.tower

ピサの斜塔。掲示板の問題。hattoriさんがつくったらしい。

掲示板にフラグを書き込むと得点が増えていく模様。とりあえずいろいろ試してみてもあまりわからず。。。

途中からXSSでダイアログでたり、強制リダイレクトされたり。

多分自動化すれば点は入るだろうと思って、思っただけでした。←こういうのダメですね

やっぱりやらないとダメだということを思い知らされました。結局これをやらなかったおかげで得点が伸びず。

captchaの自動化をどうするのだろうか?と思ったのですが、実はCaptchaを見ないとキーが変わらないみたい。気付かなかった。

Druaga.tower

ここから3問は一日目の最後に追加されたもの。

とりあえず落とし始めたのですが、回線は大混乱。80MBのファイルダウンロードに14kb/sとか無理だろ!

ギリギリまで粘りましたが、結局ダウンロードできず。落とせたチームは、二日目のはじめに即提出できたみたい。つよい。

Passwordはすでに与えられていたのでTrueCryptでマウントするとKeyを発見。

その後は、5つのディレクトリの中に100のディレクトリがあり、その中に100のディレクトリがあり、その中にtaka.jpgがそれぞれ入っていて、そのファイルはそれぞれ違うアセンブラ短歌が書かれている。これを詠んで、0609を出力できるものを探せというもの。

OCRを掛けて、ひたすら実行すれば出るだろうと思ったのですが、アセンブラ短歌の実行方法がわからず。

バイナリ勉強せねば・・・

Babel.tower

バベルの塔。2つのpureserverとjamserverという名前のバイナリファイルがそれぞれ別のポートで動いており、さらにそのファイルをもらえる。

jamserverの方は、メンバーがブラウザからそのポートにアクセスするとキーが出ることを発見。

pureserverの方は、フォーマットストリング攻撃だということはすぐにわかったのですが、やっぱりバイナリは(´・ω・`)

han01.tower

ログインフォームとハノイの塔のGifアニメがあり、更にid.txtやpass.txtへのリンクが有る。

id.txtの方をクリックすると、daemonとbackupと書かれたファイルが。URLをみると

[bash]

http://han01.tower/readfile.php?filename=id.txt&accesscode=1bc29b36f623ba82aaf6724fd3b16718

[/bash]

となっていた。accesscodeはMD5でハッシュされてるっぽい。何のハッシュなんだろう?と思ってるとメンバーの方がfilenameのハッシュだよ!と教えてくれた。やってみるとたしかにそうだ。

pass.txtも見れるかな?と思ってやってみたら見れた。daemonとbackupの後にsha~(1なのか512日は忘れた)のハッシュがあるだけ。結局わからず。

readfileではなんでも読み込めそうだったので、readfile.phpを読ませると読めた。さらにindex.htmlも読めて、ここにはkeyがありました。(すでに提出済み)

一日目はここで終了。後の話し合いの時に、メンバーさんが「ハノイの画像にIPアドレスみたいなのがあるよ」と。

二日目に試しにDNSに問い合わせてみました。がわからず。終わり際に別のサーバーがあるということが判明したので、2つめのハノイの塔のサーバーにアクセスをして見ると同じようなWebサイトが。同じようにreadfileに読ませてみると同じような感じに。

ただ今回は少し違って、menuというファイルがあることがreadfile.phpからわかった。index.htmlを読むとパスワードは/bin/menuのmd5だよ!って書いてあったので、readfile.phpにmenuを読ませるとbase64エンコードされた文字があった。コピペして、Pythonbase64をデコードして、出てきたバイナリを保存。

fileコマンドで見てみるとSysExファイルとの表示が。ググって調べるとどうやらMIDI関連のものらしい?アプリケーションで開いて探ってみましたが全くわからず、タイムアップ。よくわからないまま終わってしまった。

得点について

全国大会では地方予選と違い攻防戦なので、Keyを提出した点数と、自チームのFLAGを書き込み、守ることで得られる点数の2つがあります。

そのため、その両方を念頭に置いて挑まなければならないのですが、本戦はFLAGを守ることで得られる点数が非常に高かった模様。

私のチームはそのことを後回しにしていたせいで、後半の周りの伸びについていけず、大きく点数を落としてしまいました。

例えばPisa.towerの掲示板にFLAGを書き込む問題、最初から自動投稿するようにスクリプト化をしていたチームはそれだけでKey提出数回分の得点を得ていたみたいです。

点数配分は一応書いていたみたいなので、そこを読み飛ばしたのが悪いのですが。

一日目が終わっても競技は続く・・・

基本中の基本ですが一日目が終わってもファイル解析や落としたバイナリの穴探しは続けることができます。

Web系の問題は競技ネットワークが切られているので無理ですが、それでも話し合い位はできるので私のチームは居酒屋で酒を飲みながらやっていました(w

ホテルに到着してからもファイルの中を覗いたり色々とやっていましたが・・・うーん、難しかったw

全体的に

バイナリ系がなにもできなかったことが辛かったです。Web系の問題なども解けなかったので、メンバーさんに申し訳ない限り・・。

本戦形式の問題は、手がかりを探すことからはじめなければならないので、それに慣れていない私には厳しい大会でした。この辺りは経験が必要なのかな。

問題自体もスラスラと解けるようなものではなかったので、苦戦しました。

しかし、本戦出場は非常にいい経験になりました。チームメンバーには感謝してもしきれません。

来年のCTFで戦えるようにWriteupを見てバイナリとWebを中心に勉強しよう。

DSC01187