初学としてのコンテストのすゝめ

こんにちは、 @chocopoie116です この記事はAdvent Calendar 2015 - VOYAGE GROUPの8日目として書かれています

先週末の12/5,6で、SECCONというセキュリティコンテストのオンライン予選に参加したので、その時の話をまとめます。

SECCONとは?

(※1)

日本全体のセキュリティ技術の底上げと人材の発掘・育成をはかる目的で、業界を先導する各有志が集まり、SECCON 実行委員会というものがあり、その委員会が定期的(過去開催のスケジュールはこちら)に開催しているセキュリティのコンテストです。

なお、コンテストで競う題材は、CTFというジャンルのようです。

CTFとは

CTFとは、世界各地で開催されている著名な旗取り合戦競技(Capture The Flag)のことで、セキュリティ技術を競うコンテストの総称です。 クイズ形式の問題の謎を解いたり、実験ネットワーク内で疑似的な攻防戦を行ったりします。 クイズ形式の場合、出題ジャンルは、暗号、バイナリ、ネットワーク、Web、プログラミングなど多岐に渡り、 セキュリティのみでなくプログラミングに関する知見も問われ、攻撃技術、防御技術、解析技術、暗号の知見、ネットワーク技術など、広範な知識と経験が必要となっています。 CTFはIT技術に関する総合的な問題解決力を磨くうえで最適な競技と言えるでしょう。

(※2)

問題形式を確認するために、いくつか問題を見たところ、題材は様々ですが出題文を解くと何らかの文字列(例: FLAG_XXXXXXXXXXX)というものが見つかるようになっており それを課題サイトのフォームにsubmitして、正解してポイントゲットするという形式のようです。

参加のきっかけ

社内の同僚エンジニアからこんなのあるから参加してみない?と言われたことがきっかけです。 CTFという形式もそのタイミングで初めて知りました。 僕自身社会人になってウェブアプリケーションのエンジニアとしてキャリアをスタートさせました。セキュリティといえば徳丸本という感じで、セキュリティといってもウェブサービスを運営する上で必要なことに偏っており、不安もありましたが、興味があったので参加してみました。

参加にあたっての準備

同僚は社内slackで更に2人興味ありそうなメンバーに声をかけ、4人チームでエントリーしました。 とりあえず予習しとこうみたいな感じで問題いくつか見てみました。(※解いたとは言っていないw)

ksnctf.sweetduet.info
ctf.katsudon.org

事前学習での絶望の様子です。

当日の様子

f:id:chocopie116:20151207230533j:plain

今回の予選はオンラインで実施されるタイプなので事前にチーム登録をしておいて、アナウンスされたIRCを見ながら開始を待っていました。 15:00になってポータルサイトに問題文が表示されました。

問題を開いた途端。あっ、これ進◯ゼミでやってないやつだー・・・という感じでした。 練習で見ていた問題より平均的に難易度高めな印象。

ひとまずチームでgoogle spread sheetで問題を管理し、担当や進捗をメモしていくようにしました。 f:id:chocopie116:20151207230339p:plain

一通り問題をみて自分ができそうなやつということで、動画の中に隠されたQRコードを復元する問題に着手することにしました。(ゴールが見えることは大事)

SECCON WARS 2015 (※3) www.youtube.com

この問題自体は、画面中央にQRコードっぽいエリアがあり、それを復元したQRコードを読み込むことでFLAGが手に入るというものでした。

一般ピープルな僕はひとまず思いついた力技で解決することにしました。

f:id:chocopie116:20151207230333j:plain

  1. 動画をffmpegコマンドを使って、画像に変換する
  2. 画像中のQRコードがあるエリアを1pixel四方のエリアにして、座標を配列で管理
  3. プログラムで各セルに黒以外の色が含まれるものを配列からフィルタリングしていく(力技)

結果現れたQRコードはこちら。

f:id:chocopie116:20151207230554p:plain

他の方の回答(※4)をみると、色んなアプローチが会って面白かったです。 コードを書かずにスマートに解決している方法などあり、なるほどーという感じでした。

また問題を解きながら、時間経過や正解を投稿したことをトリガーに、出題のポータルサイトで新しい問題が公開されていきました。

僕はこの問題(この問題はあまりセキュリティの問題ではないw)以外にもかじってみたのですが、うまく貢献できませんでした。 題材としてはWebアプリの脆弱性以外にも、バイナリ解析やAndroidなど普段さわらないことに関する知識が必要でわからないことだらけでした。

チームとしての結果は、1152チーム中129位。

32問中11問正解。スコアは1400点でした。(誘ってくれた同僚のたじーさん圧倒的さすがやで事案です
10位以内で予選突破なので、目指すべき10位のスコアが4500点なので、あと15問解かなきゃ行けない計算です。 (結構遠いなおい・・・

振り返り

個人としてはかなりわからないことだらけでありましたが、コンテストきっかけでわからない分野の存在を知る・興味を持つきっかけを持てました。

問題終了後にspread sheetを使って、チームで振り返りをしたところ以下のような意見がありました。

  • 解けたときの楽しみは脱出ゲームの喜びに似ていた
  • 後半も新しい問題が増えてくることに備えて時間配分を良い感じにしたい
  • 後半になるにつれバイナリの知識がふえてきて楽しかった.ELF可愛い.gobjdumpとかgreadelfとか使いこなしたい(来年こそバイナリ解析しっかりやりたい)
  • writeup読んでコツコツ勉強します.楽しかったので来年も出る
  • なんだかんだ24時間フル参加できる時間的余裕がないと本選いけるほどの点数はとれなそう。(実力があれば別だけど)
  • Binary, Android, ハードあたりの知識が乏しい。来年までに勉強するか詳しい人をつれて来たい。
  • 各問題に対するアプローチをみんなで見れる場所にメモしておいて、同じ問題を別の人がトライするときに同じ道を通らなくても済むようにすればよかった。 特に試してみたけどダメだった方法とか残しておくのが重要そう。

要約すると時間・知識足りない。楽しい。またやりたい。といった意見でした(雑

まとめ

限られた時間で、出題者が練った問題を解くというのはとても楽しいです。(出題者の方々ありがとうございます)
コンテスト形式だと、俺そこまで出来ないし・・・と敬遠しがちでしたが
コンテストきっかけで勉強し始めたり、普段一緒に仕事しない人とワイワイしながら課題に取り組むのはとても楽しいので
これからも積極的に未知の領域でも機会があればコンテストに参加していこうと思います。

さしあたっては、CTFtime.orgのUpcoming eventsのrssをwatchしながら 過去のCTF系の問題を練習問題に、このをリファレンスとしながら勉強してみようと思います

※1 ロゴに関しては使用許諾はとっていません、サイトも調べてみたのですがロゴ使用については見当たらず、もし不都合あればコメント欄等でご指摘ください
※2 こちらより内容抜粋
※3 権利とか大丈夫なのかな?と思いましたが、YouTube提供のフリーの楽曲を使われてるとのことでした
※4 コンテストに関する問題はポータルサイトで見るのは難しいかと思うので、 SECCON 2015 writeup などと検索すると問題と他の人の回答が見れると思います

最初で最後のYAPCにスタッフとして参加した #yapcasia

今週末はビックサイトのほうにいってました。

今年で最後だからというのと、参加してもぼっちで終了しそうだから、スタッフのほうが知り合い増えそうだからやってみようという動機でスタッフ参加しました。 あと週末プロジェクトでやっているチャリティーサンタというNPOのエンジニアチームのメンバーの発表があったのも目的のうちのひとつでした。

結論あのどでかいカンファレンスをつくりあげるスタッフ業務も楽しかったし、結構スタッフ業務の間にトークも見れたので満足。 またネットで知っているだけの著名な方々もお会いすることができてミーハー心を満たせました。

よかったこと

  • YAPCに参加できた。
  • Tシャツを2秒でたためるようになった。
  • スタッフの方と結構交流できた。
  • 面白いトークいっぱいきけた。

いつもどおりの何か創ろう欲が高まったのとは別に、なんだか場としての懐の深さというかあったかさを感じました。 みんなに愛されてるなーと思いました。

技術的なところでいうとザックリこんな感じでした。

  • DDDもう少し学んでみようということ
  • アプリケーションだけでもなくミドルウェアやインフラっぽいことを学ぶためにisuconやりたいなということ
  • consul、へぇー(最近リリースしたばかりのプロダクトで、デプロイ周りで問題があったため導入チャンスはありそう)

個人的にはスタッフ業務で、会場の電源タップの供給に一役買うことができたのでよかったです。 皆様が使える規模にはできなかったのですが、少しでも多くの方のメモや調べ物ができるようになって 学びが増えたり・ブログ投稿増えたりするのに貢献できたら嬉しく思います

深夜のドン・キホーテで異常な量のケーブルをレジにもっていったら、怪しまれて偉い人に電話されてこの人に売っても大丈夫?的な確認入ってたけど僕はげんきです!11

3日間楽しくて、最高でした。 完全にYAPC再演まちっす!11w

これどうなるんだろうなー、楽しみ。

最後にNPOのチャリティーサンタのメンバーが発表した資料のリンクも貼っておきます。

サンタクロースを支える技術の発表資料リンク

ピープルのハッピーに貢献できます! もしご興味ある方いればtwitterで是非こえかけてください

かっけえと思う他人の信念を自分たちの信念とするためには。~ How Google Works読んだ~

だいぶ前に読みかけのやつを今更読了した。 謝辞と、メールテクニック部分はすべて読み飛ばしましたw

なんとなく心に残ったこと(メモしていたもの)

もちろん僕は現在管理職でも、CEOでもないのですが今自分の立場と組織における課題意識でなんとなくこれできてないなーとか、これとりいれたいなー、もし僕がチームをつくるとしたらこうしたいなーという観点でメモっていた(ものだとおもわれますw)

プロダクト(ユーザー)を大事にする。

すべからくみんな大事にしているとは思うのですが、ここを極めることがビジネスにつながるよねみたいな信念レベルにはなっていないと思う。 どうしても透明性があって、既存事業とのシナジー等で実現可能性に富んだPLに引っ張られがちである。 マネタイズわからないけど、とりあえずGOしようみたいな感覚を共有するためには、 個人として・組織として、どのような熱量と経験が必要なのだろうかみたいなことは漠然と考える

スマートクリエイティブが最高に働けるような環境を用意する

ここはバランスだなーとは思うけど、すべからく世の中で使われているプロダクトは、 エンジニア(文化)中心のプロダクトが多い気がしているので 今のチームも、そうしていきたいところ。

そのためには僕ら(エンジニア)がもらっていけるだけの責任を果たしていく必要があるかなーと思っている。

採用が一番の仕事。プロダクトと企業文化において自分より優秀な人間を雇うのが一番のお仕事。

2015年所属している会社においてはできている。(今の会社の何より素晴らしいと思うところ) それよりも僕がもっと出来るようになりたいなという話。

採用の観点(リーダーシップ・職務に関する知識・認知能力(ものの考え方、地頭)・グーグラーらしさ

当たり前だけど、大事ダナーと思った。 僕が採用イベントとかで見れているのは、最後の認知能力(次頭)と、カルチャーフィット(グーグラーらしさ)部分な気がしている もうちょい多角的に測れるようにしていかないと。

まとめ

総じて他人のすげーと思う企業文化を取り込むのは大変。 つまりこういうところが競争優位性なのだなとおもう。 さてどうやって取り込んでいったらいいのだろうか

ここらへんは今度 #ajiting で話したいところ

はじめてのぷるりく

OSSにちょろっとしたバグfixのPR投げてmergeされた。

なんかすげー優秀な人のみしかやらない特別なことかと思っていたのだけど、全然そんなことはない。 普通に設計して、実装して、テスト書いて、レビューもらうのと同じだ。

強いていうなら、コミュニケーションが英語ってことぐらい?

結局OSSにcontributeするのって、OSSを使うかどうかなんだなーってすごく当たり前な事を思った。

CROSS2015いってきたり、お遊び社内システムの着手とか

感想

楽しかった。

参加したセッション

  • はやぶさ2開発者に聞く~一度きりのテスト対策~
  • IoT・ウェアラブル・VR~今後のデバイスに向けた開発手法について ~スマホの次を見据えて~
  • Webエンジニアなら抑えておきたい最近のOSS事情
  • WebエンジニアはIoTをどうあつかえば良いのか

各セッション想い出

  • はやぶさ2開発者に聞く~一度きりのテスト対策~
    • TV番組連動の生放送とスマホアプリを連動するサービスと、はやぶさ2の人
    • テストしづらいことをどのように質を担保するのか?
    • 宇宙航空(?)のエンジニアもWebエンジニアと似たような悩みはある。
    • あとは単純に宇宙の話は知的好奇心がみたされ、わくわくした。
  • IoT・ウェアラブル・VR~今後のデバイスに向けた開発手法について ~スマホの次を見据えて~
    • お弁当美味しかったです。ついでにVRのスマホいれるダンボール箱みたいなものを抽選でもらった。
    • 普通にBaaSの宣伝で、セッションタイトルで釣られた感あった。
    • Oisixのブースのらんち美味しそうだった。
    • 普通にリモートで仕事のデプロイとかしてた。
  • Webエンジニアなら抑えておきたい最近のOSS事情
    • Webといいながら、ほとんどJavaScriptトークだった。io.jsについては使ってみよ
  • WebエンジニアはIoTをどうあつかえば良いのか
    • ヘルスケアのIoTと保険会社の相性がいいのはなるほど~と思ってしまった。
    • censorデータの送信に耐えうるバックエンドの構築とか、無機的なセンサデータから今この人間は○○をしている状態みたいなものを推計したりする部分は楽しそう。

オワッタ後のプレモル美味しかったれす! アンカンファレンス(Jxck_さんのextensible web)見たかったけど、結構時間空いてしまったので早めに帰宅。

帰宅後前からやろうと思っていたお遊びで使う社内向けサービスの設計どうしようかなということを考えた。 とりあえずwebのクライアント、サーバーサイド、ネイティブアプリの順番で実装していく。 BLEで、社内バーのAJITOにチェックインするサービスつくろうかなとおもっている。

#ajitingとは

なんとか3月ぐらいまでには終わらせたい感ある。 最悪ネイティブクライアントは社内のエンジニアに手伝ってもらう作戦w

その一環で前からやろうとしてたFacebookのReact.jsのtutorialで手を動かしました。

Tutorial | React

まだ途中だし、Fluxの概念もメリットもハラオチしていないけど、とりあえずcomponentは意外とかける。 ただJSXのsyntaxは迷う。

タグ派な気がしている

チュートリアルをこなしてみる by chocopie116 · Pull Request #1 · chocopie116/react-tutorial · GitHub

侠気プレゼンのすゝめ

侠気プレゼンとは

どちらがより侠を上げたか、会社や職種・年代を飛び越えた人間の間で、1年での成長と貢献をプレゼンするものです。 今日はそんな侠気プレゼンについて紹介したいと思います。

f:id:chocopie116:20141231131205p:plain

ここがイイよ侠気プレゼン

f:id:chocopie116:20141230195314j:plain

コンテキストを共有しない集団での成果物の定義・説明

大なり小なり所属する組織で振り返り面談とかやるとおもうんですけど、あれってビジネス・サービス・組織とかについて同じ前提条件を共有していますが、侠気プレゼンは市場・職種とか・プライベートの置かれた環境とか、もうそれらと関係なく如何に侠気を高められたかについて話す必要があります。
その過程で、自分が出している成果物を定性・定量化して他者に伝えるときに思いの外客観視できます。

うわ、おれしょぼwまじがんばらなって無駄に意識高められる

大前研一さんもこういっています。

人間が変わる方法は3つしかない。

1番目は時間配分を変える。
2番目は住む場所を変える。
3番目はつきあう人を変える。
 
この3つの要素でしか人間は変わらない。
 
最も無意味なのは「決意を新たにする」ことだ。

そうです。そんなのは関係ありません。

ここがヘンだよ侠気プレゼン

とにかく色々ぶっちゃけてからが勝負です。もう年末になるとその一年やってきたことは変えられないので、テクニカルな侠気UPスキルが求められます。

  • お給料の話を口走るもよし。
  • 異性の交友関係を口走るもよし。
  • スライドでネタに走るもよし。
  • 翌年の壮大な豊富を述べるもよし。

f:id:chocopie116:20141231131211p:plain

あらゆる事象は、お酒で洗い流すことができますのでご安心ください。

2015年もやります!

参加は自由です。発表内容も自由です。

侠気プレゼン2015 | Facebook

※ 不適切な写真等ございましたら、非掲載にしますので申し付けください。

2014年振り返り

会社の日報とか、SNSとか、evernoteとかを引っ張りだしてみて振り返り。 2014年は、まぁまぁな年でした。

2014年の感想

おじさんになると楽しさを創っていかないとダメである

3年目ともなると仕事において、ある程度飽きがでてくる時期で(意識低め)、 改めて自分ってどんなことが楽しいんだろう?ということに、もがいていたような気がします。

いろんな外部要因でモチベーションがかなりage sageして、働き方としてよくない時期もあったなーと思いますw 会社のやるべきことを見定めながら、自分の関心・やりたいことを仕事にしていかないとなーと強く思う。 基本的に楽しさは一時のものなので、たくさん飽きながら、新しい楽しさを見つける必要が有るなと思うようになりました。 来年も新しい楽しさを求めて、もがいてみようと思います。

やっぱり創るのは楽しい

大なり小なり、何か1つの動くものを創るのはとても楽しい。 どんな大きさのものであれ学びはとても大きい。 VOYAGE LABとか、各種システム開発とかサービスをイチから創るのはとても楽しい。

わかんないもんはしゃーない。

なんかわからないものとか、失敗したらそのタイミングで謝ればいっかーと思うようになったら 人生生きやすくなった気がする。結果うまくいってるかはわからないw

2014年の出来事つらつら

1月

  • 募金PJのリニューアルとかでコンセプトメイキングとかしてた
  • なんか色々悩んでたっぽい。

2月

  • コンテンツでガチャポンとかつくってた。
  • VOYAGE LAB(肉体的にマジつらかったw)
  • Node.jsの勉強会にいってみた。
  • ほげほげ勉強会でsocket.io

3月

  • 未来構想会議に参加した。
  • SMS認証の実装

4月

  • MTG多すぎて疲弊。
  • 新卒のOJTになった。
  • 資本提携している会社と共同開発のアプリをやることになった。
  • 新卒エンジニア研修のネタとか考えてた。

5月

  • 10周年に向けての計画とか
  • 沖縄に旅行。

6月

7月

  • 台湾に旅行
  • 会社が上場した。
  • 4人チームで、リーダー的なお仕事をした
  • 提携コンテンツ周り

8月

  • さしみたんぽぽ業(めぼしいログなし)

9月

  • 同期結婚式で京都に行く。
  • 会社の総会のコンテンツつくった。

10月

  • チーム代わった。
  • jQuery + CSS3のゲームをenchant.jsの書き換えをすることに
  • Slackで会社員生活が急に楽しくなった。
  • Huluにハマる

11月

  • ヒストリーブック
  • 忘年会の準備
  • クリスマスサンタのアンケートフォームシステムつくった
  • tech podcastにハマる

12月

来年もAjitoでビール飲みながら、仕事がんばります!!!