本記事は、サムザップ Advent Calendar 2019 #1 の12/19の記事です。
サムザップでサーバサイドエンジニアをしております。今回CTFに触れる機会があったので、ご紹介したいと思います。
#前置き
サムザップを含むSGE(サイバーエージェントのゲーム事業部)各社では、年に一度社員エンジニアを対象にハッカソン的なプログラミングコンテストを実施しています。毎年お題は変わっており事前情報はあまりないのですが、今年は「CTF形式のセキュリティ競技」がテーマという事だけ知らされておりました。
はて?CTFってなんぞ?
あの24時間戦う男、ジャックバウアーがいたとこですか?(→それはCTU!)
#CTFとは
20年近くサーバサイドエンジニアをやっておりますが、お恥ずかしながらCTFは初耳でした。Google先生に聞いてみたところ「Capture The Flag」の略なのだそうな。私の頭の中には真夏のビーチフラッグしか思い浮かばなかったのですが、情報セキュリティのスキルを用いて課題の中から隠された答えとなる「FLAG」を見つけ出し得点を稼ぐ競技なのだそうです。
普段開発している中で、SQLインジェクションとかXSSくらいは気にしていたりしますが、「セキュリティーコンテスト」って言われるとちょっと身構えてしまいますね。そんなテーマで社内コンテストをやるっていうんですから、ちょっとは予習しておかなきゃかな?と思い、CTFについて調べてみました。
#必要な知識
- Webアプリケーションの脆弱性やデータベースアクセス
- プログラミング言語、リバースエンジニアリング
- ネットワークの通信技術やトラフィックのキャプチャ
- 暗号化技術
等々、幅広い知識が必要になります。
#代表的なCTF
大きなものでは「Security Contest(SECCON)」があり、毎年開催されています。これは有名ですね。でもいきなり大会!って敷居が高いですよね。そんなあなた(?)や私のために、いつでもチャレンジできる常設のCTFサイトがいくつかあります。
この中から社内コンテストの予習も兼ねて、初心者にも解きやすいよ!との評判があった「CpawCTF」を少し触ってみました。
まずは右上の「SignUp」からユーザー登録しましょう。登録完了したら、「一度こちらを参考にしてください!」のリンク先をよく読みましょう。私はよく読まずにいきなり1問目を始めてしまった私は「ちょっと何言ってるのか良くわからないんですけど」状態でした。答えをWeb上に公開してしまうのはご法度らしいので詳しいことは書きませんが、言われてみればホントに問題に書いてあるまんまの回答でした。
そんなこんなでLevel1の合計9問はサクッと1時間程度で終わりました。ちょっとした謎解きというかクイズ感覚で楽しいですね!(まだLevel1だし)よし、明日から続けていこう!
と思っていたら、あっという間に社内のコンテスト当日を迎えてしまいました。(まだLevel1しかクリアしてないしー)当然のことながら、社内コンテストの結果は散々だったのですが、予めCTFってこんな風にやるんだよ、ってのがわかっていたので参考にはなりました。
#まとめ
普段のサーバサイド開発ではあまり経験しない技術に触れる事ができてとても良い機会でした。CTFは1問1問が割と小さくできているので(Levelが上がるとそうでもないかもしれないが)、ちょっとした時間にチャレンジできるし、セキュリティの知識は知っている事で必ず業務にも生かせる分野だと思います。今後も暇を見つけて、いや、息抜きがてらに少しずつチャレンジしていこうと思います。
年末年始のお休み中、あなたもCTFに挑戦してみてはいかがでしょうか?
明日は、@mmm_hiroさんの記事です。