SECCON 2013 福岡大会にチームINFOGRAMとして参加してきました。
3人チームで出場するはずでしたが、チームメイトの1人が大会直前で脱臼したので、2人で挑みました。
結果、なぜか
優勝してしました。
Write-upというものを書くのが通例みたいなので、解けた問題だけ書きたいと思います。
どっち派?(その他:100pt)
最初の正解者でした(たぶん全チーム中最初のポイントであったとも思う)。
下記の文字列が与えられた。
jj jlk_hjljh_hjlhjl hklhkl_kljklj_kkljhlj_hjl_hjljh llhjj_kljh_jlkh
jとkとlとh…これviや…(ここまで5秒)
「j」を「↓」、「k」を「↑」、「h」を「←」、「l」を「→」に置き換えた
↓↓ ↓→↑_←↓→↓←_←↓→←↓→ ←↑→←↑→_↑→↓↑→↓_↑↑→↓←→↓_←↓→_←↓→↓← →→←↓↓_↑→↓←_↓→↑←
そのまま右手にペンとノートを持って人間コマンド入力したら
最初は「I uSE EmAcS Too」やら「IuSEEmAcSToo」をsubmitしていたが通らなかった。
最終的にアンダースコアを入れて正解だった気がする
答え(確か):I u_S_E E_m_A_c_S T_o_o
ちなみに僕はvi派です。Emacsはよく知りません。
decrypt(その他:100pt)
これも最初の正解者でした。
下記の文字列が与えられた。
Szylrow lfw Xbzk hc z lozahlhqjzb qrlaqqo cyqol kwjwozbbm ybzmwa tm sfhbaowj, pfwow lpq lwzuc wzsf fzgw z xbzk (qo qlfwo uzoiwo) zja lfw qtvwslhgw hc lq szylrow lfw qlfwo lwzu'c xbzk, bqszlwa zl lfw lwzu'c "tzcw," zja tohjk hl czxwbm tzsi lq lfwho qpj tzcw. Wjwum ybzmwoc szj tw "lzkkwa" tm ybzmwoc hj lfwho fquw lwoohlqom; lfwcw ybzmwoc zow lfwj, awywjahjk qj lfw zkowwa orbwc, qrl qx lfw kzuw, uwutwoc qx lfw qyyqchlw lwzu, qo "hj vzhb". (Qjw gzohzlhqj qx lfw kzuw hjsbrawc z "vzhb" zowz hj zaahlhqj lq lfw xbzk qj wzsf lwzu'c lwoohlqom.)
Sqjkozlrbzlhqj!
Lfw zjcpwo hc CrtclhlrlhqjShyfwoHcWzcm
換字式暗号や…(ここまで2秒)。
Capture the Flag is a traditional outdoor sport generally played by children, where two teams each have a flag (or other marker) and the objective is to capture the other team's flag, located at the team's 'base,' and bring it safely back to their own base. Enemy players can be 'tagged' by players in their home territory; these players are then, depending on the agreed rules, out of the game, members of the opposite team, or 'in jail'. (One variation of the game includes a 'jail' area in addition to the flag on each team's territory.) Congratulation! The answer is SubstitutionCipherIsEasy
答え:SubstitutionCipherIsEasy
訳:換字式暗号ってカンタン!
2012年4月27日11時08分54秒に作成されたエントリは?(フォレンジック:100pt)※表題うろ覚え
ファイルが与えられた。
http://sites.google.com/site/horityctf/home/files/Filesystem001.bin
バイナリエディタで開いてみたらjpgとかファイル名っぽいのとかいろいろ書いてある。
ダンプファイルかと思ってmountを試してみたけど「そんなフォーマット知らん」って言われてだめだった。
頻出する「2E 20 20 20 20 20 20 20」とかでググってたら下記のページに行き着いた。
http://pierrelib.pagesperso-orange.fr/filesystems/fat16.html
どうやらFATらしい。それがわかっていろいろやってみたけど、結局mountできなかった。
タイムスタンプがわかればよかったので、上記サイトの"The DOS Date-Time format"の表を参考に「2012年4月27日11時08分54秒」を変換してみた。
年(1980年から数えて) 7bit : (2012-1980) = 32 => 0100000
月 4bit : 4 => 0100
日 5bit
: 27 => 11011
時 5bit : 11 => 01011
分 6bit
: 8 => 001000
秒(2倍する) 5bit : (54/2)= 27 => 11011
これをつなげて目的のタイムスタンプ「40 9b 59 1b」を得た。
リトルエンディアンにして検索したら1つだけヒットした。
きっとこれ(Panda.jpg)だと思ってsubmitして正解
答え:Panda.jpg
他のチームの解き方を聞くと、stringsして出てきた文字列でブルートフォースしてもよかったみたい(一定時間のロックアウトを恐れなければ)。
パスワードを探せ(バイナリ:100pt)
バイナリファイルが与えられた(実際の出題は拡張子付きのstamp.exe)。
起動すると文字列がいぱーい。
stringsでは見つからなかったので、パスワードを探すべくおもむろにollydbgを起動。
怪しいところを探していたら"TextOutA"なる関数がループで呼ばれていた。
それっぽい文字を1文字ずつ出力していた。引数のY座標は変化しないのに、X座標の方はバラバラだった(さらにもう1つループがあって、そっちはお邪魔文字をスタンプするループだった)。
「Flagを1文字ずつ、順番はバラバラに1行(同じY座標)に表示」って処理かなぁと超閃きをかまして、ループ終了後にブレークを置いて画面を確認した。
おぉ、当たってた。
答え:ST4MPS3CURITY
まとめと感想
解けたのは以上の4問でした。
最初の正解者には1%の追加ポイントが入るので、最終スコアは402。
長野大会に比べたらヒドイですね。長野の2位3位のチームに申し訳ない気がします。
福岡大会の最終的なスコア↓
web系の問題はping打って「ふーん、なるほどね」しただけで全く手が出ませんでした。勉強しときます。
今回はC#の出番はなく、紙とペンが大活躍でした。
優勝するつもりはなかったのですが、優勝した以上は九州代表として全国で「ふーん、なるほどね(pingをうちながら」をかましてきます。
関係者の皆様、おつかれさまでした!