情報と知識の攻防、CTFの世界 #1
競技プログラミングが脚光を浴びて盛り上がる世の中ですが、いかがお過ごしでしょうか。(2回目)
今日はCTFという、セキュリティ分野のコンテストについてお話します。
競技プログラムは、「入力値」「条件」「問題文」があり、コードを書いて「期待する出力」を得るゲームですが、CTF は決められた文字列をあらゆる手段を用いて探し出すゲームです。
その決められた文字列はCTF では旗(Flag) と呼ばれています。CTF はCapture The Flag の略です。
CTF が何者かを語ったところで早速、実例を見ていきましょう。
ksnctf
ここはCTF の問題にチャレンジできて、難易度ごとにポイントが貰えます。
問題を解くのに時間制限とかないし、再チャレンジも自由なので気楽にいきましょう。
ksnctf だと、FLAG_123456xy の形式で与えられる文字列が旗(Flag) になります。
この文字列を探し出して提出し、合っていればポイントが貰えるわけです。
チュートリアル問題の #1 Test Problem から見ていきましょう。
なんてことはないです。問題文に探すべき文字列の旗(Flag) があるので、それを提出すれば正解です。今回は問題文の中にFlag がいたので簡単でしたね。
CTF はこういう感じだよ~というのが掴めればいいかなと思います。
もう少し踏み込んで、 #2 Easy Cipher を見ていきましょう
Cipher は 暗号 です。暗号に関する問題みたいですね。
文字列がずらっと並んでいる辺りも暗号ぽいですよね。
文字列はスペースで区切られて.[コロン] がところどころ打たれている辺りから推測すると文章っぽいです。
CTF の解き方はFlag となる文字列を探すことでしたので、この暗号を解読できれば目的のFlag がゲットできそうです。
問題文に戻って注目してみてみましょう。 EBG KVVV vf が繰り返し使われていて、必ず文頭になってます。あと、 yrggre という文字列も繰り返し使われていますが、 yrggref という末尾だけ変わっている文字列が使われているのもヒントになりそうです。
何となく掴めてきたでしょうか?
解説編は次回にしたいと思います。
それでは。
Discussion