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

Yahoo!のインターン(サイエンス/大阪)に行ってきた

Yahoo!の黒帯インターンシップにてサイエンスコースの大阪オフィスに行ってきました.
サイエンス 〜黒帯インターンシップ〜
5日間のコースで(多分)人生初の大阪.
時間が経ってしまった上にあまりメモをとれていなかったので覚えていることを.

経緯と流れ

過去何回かCTFに参加していたため,インターンに応募の際に最初にオススメされたのは"セキュリティ 〜黒帯インターンシップ〜"でした.
確か"セキュリティ専門ではない企業が珍しく募集している"という流れだったはず.
その時に今年のYahoo!インターンは細分化されたコース分けになっていることを初めて知りました.
今年はいくつかの企業にインターンに行きたいなぁと思っていたので,興味がある∧日程が被りにくいコース,という基準で選びました.
その結果サイエンスコースの大阪に応募することに.

エントリーシートだけでなく面接も必要だったため,新幹線の中で急いで卒論を外部向けの真面目なverに変更して発表練習をしていた記憶が.

内容

コースが細分化された結果なのかインターン生は3人のみ. 5日間のなかで,セットアップ,課題決め,黒帯による講義,そして最終日に成果発表を行いました.

インターン課題

短時間でいっぱいor難しいことをやるのは難しかったため,僕はpythonHadoop(streaming)でゴニョゴニョする程度で終了です. Hadoopは初めて触ったのですが,一筋縄ではいかないなというのが5日間を終えての感想です.
(Hadoop印象遷移)
「あ,なんだラクそう」->「え,なにこれバグわかんない」->「つらい」->「でもやっぱりすごい」
インターン中メンターの方と色々相談しながら作業を進めていき,方針や目標がサクサク決まったのでコーディング作業に集中できました. 最後に結果を分析する際には非常にお世話になりました.

黒帯の講義

サイエンス 〜黒帯インターンシップ〜に書いてなかったので行くまで知らなかったのですが,インターン中に自然言語の専門家と機械学習の専門家から講義を受ける時間が用意されていました.

Yahoo!には黒帯制度なるものがあるらしく……あれ,課題解決休暇? は知らなかった.
Yahoo! JAPAN - IR関連情報
研究室のOBの方が黒帯と聞いて驚きました.

発表

準備

発表前日にデバッグのためHadoopを回している間の待ち時間があったので,「大体こんな感じになるのかなー」と大体の構成を考えてました.
スライドの中身は当日の午前中から作り始めてメンターに見てもらい,更に一度練習をしてフィードバックを頂きました.
発表の準備時間は割りとタイトでしたが,スライド枚数を減らしてなんとかしました.
(その分かなり発表時間が余った.なんとかなってない)

結果

なんと,優秀賞を頂きました.
景品に自撮り棒とスマホ用レンズを頂きました.
発表を色々な方々に褒められて非常に嬉しかったです.

他の記事とのdiff

この記事を書くにあたって今までのインターンの記事を参考にしたんですが,オフィスによる違いなのか時間による変化なのか違いがあったのでdiffをとっておきます.
(といってもよくよく調べたらそんなに記事なかた……)

マシン

インターン生にはWindows機が渡されていましたが,オフィス全体を見渡すとWinとMacは大体半々くらいでした.
メンターの方に聞いたらMacだからと特別な申請はないらしく,最初に好きに選べるそうです.
エンジニアやデザイナーはMacを選ぶ傾向があるとか.

エディタ

あんまり話にあがりませんでした.
エディタは……まあ好きに選べばいいんじゃないかな.

あ,美少女はいなかったです.

まとめ

も っ と デ ー タ に さ わ り た い !

はてなブログに引っ越した

ブログを引っ越すのはこれで2度目になるか.

最初はBloggerで書き始めた.

その内Markdownで書きたくなり,どうしようか悩んだ結果

ドメインを購入してPericanとGithub.pageを使って公開することにした.

しかしPericanという部分がネックになり,

外出先や研究室で書けずなかなか更新ができなくなった.

また,Github.pagesをブログに使うのはもったいないという同期からの指摘もあった.

 

というわけで,sukerutulo.comポートフォリオサイトにし,

ブログは sukerutulo.hatenablog.comにすることにする.

 

その内以前のブログの内容をこっちに持ってこようかと思う(フラグ)

持ってくるほどの内容でもないけれど.

 

ポートフォリオにするといったものの,コンテンツがない.

作らねば.