CTF入門編

この記事は公開されてから半年以上経過しています。情報が古い可能性がありますので、ご注意ください。

初めまして、アルバイトの鈴木です。

皆様、CTFというものをご存知でしょうか?あまり馴染みのない言葉かと思います。

CTFとはキャプチャー・ザ・フラッグの略で旗取り合戦のようなものです。シューティングゲームをプレイする人にとっては馴染み深い言葉かもしれませんね。

さてさて、しかし今回はシューティングゲームのことではなく、コンピューターセキュリティにおけるCTFを語らせて頂きます。

【コンピュータセキュリティの分野におけるキャプチャー・ザ・フラッグ(CTF)は、コンピュータセキュリティ技術の競技である。CTFは通常、参加者に対しコンピュータを守る経験に加え、現実の世界で発見されたサイバー攻撃への対処を学ぶ教育手法として企画されている。「ハッカーコンテスト」「ハッキング大会」「ハッキング技術コンテスト」「ハッカー大会」などとも訳される。】
(wikipedia「CTF」)

と、CTFとは「問題中のとある特定の場所に設置されている旗(答え)をGETする。」という競技です。

世界中で大会が開かれ、ホワイトハッカーの間ではとても熱いコンテンツとなっています。

少しイメージがしづらいかもしれませんので、早速CTFの中身を覗いてみましょう。

synt_fxlnepu_argjbexf_ebg13



例えば、上記のような文字列。一見なにがなにやらわからない文字列となっていますが、まずはこの文字列の特徴を整理してみましょう。


・なにやらアンダーバーで句切られている?
・発音できる文字列ではない。
・文字列の最後に数字が含まれている。

もう少しあるかもしれませんが今回の問題で必要な情報はこの辺りに含まれていると推測します。そして最後の

文字列の最後に数字が含まれている。

という部分。一見意味のないように見える文字列の中で数字というのはかなり重要なのでその部分に着目してみます。

特にその数字が13ともなればまず最初にrot13という有名な暗号手法を疑ってみましょう。

【rot13は単換字式暗号(シーザー暗号)の一つである。アルファベットを一文字毎に13文字後のアルファベットに置き換える。】
(wikipedia「ROT13」)

rot13では数字が変換されないためその部分であるのかな?と推測します。

ということでこの文字列を13文字ずつずらしてみます。せっかくなのでPythonを使ってみましょう。

さて、どうなるか・・・?

tee



この通り!意味のある文字列が出来上がります。(クリックで画像が拡大できます)

CTFの大会などではこの文字列を問題の答えとして入力し、点数をGETし得点を競う。といった流れとなっています。

CTFではこのような問題の他に(このような問題はあまり出ないかもしれません)Web・ネットワーク・バイナリなど様々なジャンルの問題が用意されていますので、興味のある方は様々な問題に触れてみてください!

私自身CTFの隅っこをチョビっと齧った程度の知識しかないので間違い等あるかもしれませんのでその時は指摘していただけると幸いです。

以上、CTF入門編でした。

コメントを残す

メールアドレスが公開されることはありません。

Time limit is exhausted. Please reload CAPTCHA.