先ほど終了した SECCON 2014 オンライン予選(国際化)に参加してました.
以下,淡々と解いた問題の write-up です.解いた順は忘れたのでカテゴリとポイント順っぽく並べておきます.
[Programming 100] Choose the number
アクセスしてやる系の問題です.数字がいくつか与えられ最大または最小値を聞かれるのでそれに答えるだけの簡単なお仕事です. 100 回答えるとフラグが出ます.
The flag is SECCON{Programming is so fun!}
[Network 100] Get the key
pcap です.basic 認証してる通信があるので,そこにアクセスするとフラグが書かれたファイルがあるので開く.
SECCON{Basic_NW_Challenge_Done!}
[Network 200] version2
問題文が「もうすぐ version 2 が来るけど準備はいいかい? srv h2o.pwn.seccon.jp. 」だったので,とりあえず dig _http._tcp.h2o.pwn.seccon.jp SRV とかしてみました.
するとポート番号が 65080 らしいので,そこにアクセスしてみると version 2 でアクセスしろみたいなことを言われます.たぶん HTTP 2 のことだと思ったのですが,手元に HTTP 2 が使えるブラウザがありませんでした.そして良さそうなサービスを見つけたので利用しました.
レスポンスヘッダにフラグが入っていました.
SECCON{spdy4isSoC001}
[Network 300] Get from curious “FTP” server
LIST とかファイル一覧を見る系のコマンドが使えない FTP サーバなのですが,なぜか STAT は使えたので STAT / でオッケーです.
STAT /
213-Status follows:
drwxr-xr-x 2 0 107 4096 Nov 29 04:43 .
drwxr-xr-x 2 0 107 4096 Nov 29 04:43 ..
-rw-r--r-- 1 0 0 38 Nov 29 04:43 key_is_in_this_file_afjoirefjort94dv7u.txt
213 End of status
SECCON{S0m3+im3_Pr0t0c0l_t411_4_1i3.}
[Web 100] jspuzzle
とりあえず,再読込しなくても別のに取り替えれたので,いろいろ試しまくって alert が出てなるほどなーとなりましたw
"use strict"; ({"function" :function(){ this[ "null" ] = (new Function( "return" + "/*^_^*/" + "this" ))(); var pattern = "^[w]$"; var r = new RegExp( pattern ); this[ r[ "exec" ]( pattern ) ][ "alert" ]( 1 ); }})[ "Function"[ "toLowerCase" ]() ]();
Flag: SECCON{3678cbe0171c8517abeab9d20786a7390ffb602d}
[Web 300] Bleeding “Heartbleed” Test Web
Heartbleed をチェックしてくれるサービスみたいです.挙動的に SQL インジェクションっぽいんですが,指定できるのがチェックしたいサーバの IP アドレスとポートだけで,そこからは難しそうです.
結局, Heartbeet レスポンスに入れれば良いのだろうとなって,その通りだったので,適当にツール作って解きました.
何故だかデバッグ用のメッセージがあってそこに表示できそうだったので,チームメンバと共に頑張って flag のテーブルを見つけて取り出した感じです.
SECCON{IknewIt!SQLiteAgain!!!}
[QR 400] BBQR
これは時間内に解けませんでした. 200 点問題の QR (Easy) にもチャレンジしたんですが, 1 つの QR コードに複数の指示子があるとは思わずに苦労していたところ,これまた他のチームメンバが解いてくれました.なのでそこは OK だったのですが,数学っぽい考えが面倒すぎて最後までやってませんでした.結局終了 30 分後に解けました.
考え方は以下のページを逆にする感じです.
QRコードをつくってみる その3 – 誤り訂正コード語の作成
誤り訂正コードを作るときには x の係数が最大のものを消していくので,戻すときは x の係数が最小のものを消していくようにすると良いです.間に合わなくて残念です.
SECCON{iReNun8rpEMPiKoT}
たぶん僕が解いたのは以上です.今回はやたらと python が活躍しました.もっと早く書けるようになったほうが良いなあと思いました.
ということで関係者の皆様お疲れ様でした.