CTFで初心者向けの問題を作ってみた話
はじめに
これは香川大学工学部サークルSLP(学生プログラミング研究所)のアドベントカレンダー
3日目の記事です。SLPのメンバとしては居ないことになっていはいますが、勝手に書いていきたいと思います。
病院の検査通いで余り体力が残っていないのでささっと書いてしまいます。
CTFってなんぞ?
CTF(Capture The Flag)についての説明です。SECCONの話をしようとしてる人もいるみたいなので手短に。。。
ここで取り上げるCTFは、コンピュータセキュリティの分野におけるものを指します。
Wikipediaで説明されているとおり、CTFは通常、参加者に対しコンピュータを守る経験や、現実の世界で発見されたサイバー攻撃への対処を学ぶ教育手法として企画されています。
このCTFには、競技の種類として、クイズ形式と攻防戦形式があります。
この記事では、クイズ形式のCTFの問題を作っていく内容の話をしていきます。
初心者向けのCTFについて
現在ある環境で、初めてCTFをやってみたいという人におすすめされるようなものとして、 ksnctf や CpawCTF が挙げられたりしますが、実際にやってみると、CTF初心者からは何から手をつけていいのやらわからないようなものとなっています。
そこで、コンピュータ初心者に対しては不向きであることから、自分たちで勝手に簡単なCTFを作ってみようという話が上がったので、簡単な問題を作って内輪でコソコソと作っています。
そもそも簡単な問題ってなんだ?
CTFには、以下のような問題の種類があります。
- Miscellaneous
コンピュータに関する雑学や数学パズルなどの問題
- Network
ネットワークのパケット解析など
- Web
Webアプリケーションの脆弱性に攻撃する問題
- Pwnable
プログラムの脆弱性に攻撃する問題
- Forensics
HDDやUSBメモリや物理メモリのイメージファイルを解析する問題
- Binary
プログラムの中に埋め込まれた回答を探す問題
それぞれに、問題の特色があって、個人の得手不得手で難易度は変わってきます。
先程紹介したCTF常設サイトでは、殆どの問題がMiscellaneous以外となっています。
コンピュータを余り触ったことのない人間にWebアプリケーションやプログラムの脆弱性を付けと言われて簡単に出来るでしょうか?出来ませんよね?出来てたまるか!
ということで、初心者向けの問題に適しているジャンルは、Miscellaneousということになります。特にこの手のジャンルの中でも、Triviaというジャンルになりますね。要は、コンピュータに関する知識を学んでもらおうというわけです。
問題の内容について
では、実際に作成した問題について一例を紹介していきます。
Web検索
その名の通りWeb検索での問題です。Webで個人のブログなどにフラグの文字を含んだページを用意しておきます。そのブログをWeb検索してフラグの文字を見つけてもらおうという問題です。
この問題では、Webブラウザの使い方について知ってもらおうという考えで作成しました。Webブラウザで検索するだけでなく、Ct+fの検索ようなWebブラウザにある機能の使い方も学んでもらえるようにする工夫をするとより良い問題になるかもしれません。
圧縮ファイル
これはよくある問題だと思います。zip形式に代表される圧縮ファイルを解凍して中身のファイルに答えが入っているという問題です。圧縮ファイルの種類を増やせばいろいろな圧縮形式があることを知ってもらえるため、コンピュータの拡張子の勉強にいいと思います。
パスワードに関する問題
簡単なパスワードのかかったものを用意して、問題文にそのファイルの仮想の持ち主の紹介をするようにしたものです。例えば、持ち主の誕生日について説明を書きます、この時のパスワードがその人の誕生日になっているという問題です。
パスワードの設定するときに推測されやすいので、そのようなパスワードの設定には気を付けましょうという警告をできる内容です。
まとめ
以上のような問題を多数作製して、同じチームの人と遊んでいました。
現在CTFのサイトの作製をしていってますので、また、作成できた頃に連絡できたらなって思ってます。サーバ管理がすごく面倒なことになっているので、しばらく先になりそうだけども。。。
CTFと聞いてSECCONの手助けになるような内容を期待していた人には申し訳ないと思いつつ、ここまでとさせていただきます。
ファイル投稿の方法が分かれば、あとで適当な問題1つ投げておきます。