mixiのScrapChallengeに行ってきた

mixiのScrapChallenge 2015に行ってきた.

alpha.mixi.co.jp

研究室でCTFゼミをやったり,セキュリティの授業に出ていたりしてはいたが,どうにもうだつが上がらない. ここは1つガチ勢に揉まれてこようではないか.

開始前

そんなわけでインターンの合間を縫って渋谷にあるmixi本社にお邪魔してきました.
渋谷って恵比寿から歩いていけるんですね.しかも11時開始,余裕じゃないですか.
そう思ってた時期が僕にもありました.
着いたのは数分前,ギリギリでしたね.

f:id:sukerutulo:20150830010136j:plain 着いた時には皆席についていて,グループ分けがなされていました.
前日にブログ等で事前調査をしたところ,なんか地域で固まるらしい.
案の定id:oboenikuiと同じチームでした.これで安心して難問を投げられます.

遠方から来る人もいるために集合が遅めだったので,
今回の主旨やセキュリティに関する軽い説明を行って昼飯を食べました.
焼き肉焼き肉〜

f:id:sukerutulo:20150830010225j:plain

チュートリアル

とりあえずログインしてみて,XSSを運営に報告するといういわゆるsubmit確認フェイズ. 実はこの時ログインユーザーを間違えてしまった挙句,他人のアカウントでパスも変更してしまうという失態をやらかしていました.
あの時は本当にすいませんでした.
若干時間に余裕があったので問題が公開される前だったけど,どんなページなんかなーとあちこち試してみたりとか.

スタート

いよいよ競技開始です.競技自体はSlackを通じて行われるので,以下の記述はSlackのログを元に書かれています. あ,問題内容はオフレコなんで,とりあえず雰囲気と進行具合だけです. 大会中は進行に合わせて問題のヒントが公開され,ヒントの分だけ獲得ポイントが下がっていきます. なんか妨害コンテンツも流れていたらしいですが,普通にいつも聞いてるBGMが流れていた気がします.(あまり覚えてない)
作業BGM探している人はニコニコで"電子ドラッグ"タグ検索するのオススメですよ.

前半戦

何時に始まるんだろう〜とかぼやぼやしている内にスタートしました.(14:00)
スコアボードから全11問の出題と把握していましたが,とりあえず5問のオープンです.
なぜか2問目,3問目から解き始めるチームメンバー達.ぼくは1問目です.
えーと,あーと,なんて戸惑っている内によそのチームがfirst acceptを取り焦る焦る.
なんとかして1問目を解いて提出した際には2問解いてたチームもあったかと.(14:36)
次に何を解けばいいのかわからなかったけど,とりあえず2問目に着手.
この辺で僕と入れ替わりに2問目から5問目にシフトしていたメンバーの提出がaccept(14:57)
うちが2問解けたくらいで別のチームが前半5問を解いて「あ,これは無理かな」と思い始める.
うんうん唸ってとりあえずこれでいいのかな,と提出した2問目が無事accept.(15:19)

後半戦

この頃にはよそのチームが解き進めたことで後半6問もオープンしていました.
大会は後半戦に進行.
ヒントの公開も進んでいき,順調に下がっていくポイント数.精神的焦りがマッハ.
この辺りで「もう俺にはわからん!」と他のメンバーにあとを任せてSQL(6~8問目)に専念.
チームメンバーも5問目をacceptします.(15:35)
oboenikuiが3問目を提出するのとほぼ同時に僕も6問目を提出し,accept.(15:47)
その後延々とSQLを叩き続け7問目,8問目と連続acceptを果たしました(16:04)(16:22)
その後,他の問題はチームメンバーに任せ,僕は9問目に取り組みます.
9問目は最後まで解くことができず,oboenikuiが10問目と11問目をacceptしました(16:23)(16:39)
そしてついに大会終了(16:40)

これ書いてて知ったんですが最後ギリギリだったんですね.
1時間近く9問目に悩まされていたせいで全くチームのことがみえていなかったのですが,
終了後に確認したら9問目以外は全て解き終わってたとのこと.我々の最終成績は10/11でした.

進行と流れ

上記のaccept状況をまとめました.時系列順だと確かこんな感じ.
開始 14:00
問1 14:36
問4 14:57
問2 15:19
問5 15:35
問3 15:47
問6 15:47
問7 16:04
問8 16:22
問10 16:23
問11 16:39
終了 16:40
誰かsecconみたいにイイカンジのスコアグラフお願いします, と言いたいところだけど実際には正確な点数推移がわからないので無理ですね.

解説

f:id:sukerutulo:20150830010350j:plain 膀胱が限界だったので競技終了後にトイレに飛び込んで帰ってきたら問題解説がスタート. 自分が解いた問題は想定解答をチェックし,解かなかった問題はそもそも何の問題なのかを確認. つくづくSQL担当で良かったと実感. 最後まで解けなかった9問目ですが(このタイミングでは)解答聞いてもよくわかんなかった.
あとで懇親会直前に質問し直してようやく理解ができて納得.

結果発表

ついに結果発表,という緊張の時間だったはずなんですが9問目の本当の解答が気になってそれどころじゃなかったです. それよりも9問目の方が重要でした.最優先事項.
3位,2位とチーム名に得点が発表され,最後の1位は我々のチーム
……え,何? 若干の間ぽかんともしたけど,優勝したようです.マジか.

感想とまとめ

9問目,悔しかったですね.
正しい解答を聞いた後には「ああ!」と納得し「いや,でも無理だったな……」と納得したものの, それでもやっぱり全完したかったです.

さておき今回の勝利は一目見て「あ,よくわからん.無理そう」と思った問題をぶん投げさせてくれて, しかもそれを解答してくれたチームメンバーのおかげだと思います. あんまりチームの方針決めてませんでしたがうまくはまったかな,と.

チームメンバーとこの素晴らしい機会を与えてくれたmixiの方々に感謝です. 運営の方も仰っていましたが,実際のウェブサイトをこんな風に攻撃できる機会はあんまりないです. 常設CTF系はいっぱいありますが,scrap challengeはただflagを取りに行くよりももっと実践的に攻撃できます. それに,まぁ……常設CTFとかは常設されてるだけあって進んでくと結構難易度高めですし……
あとやっぱりこういう機会がいっぱいあったほうがモチベーションに繋がると思います.

今後こんなにいい成績をとれることはないと思うので当分自慢させてもらいます. f:id:sukerutulo:20150830014301j:plain