CTF問題をホスティングした -その2-

SQLインジェクション祭りだああああ


CTF初心者勉強会のDB, SQL編の講師を担当することになり、SQLの入門と、インジェンクションの手ほどきを行った。

実際にSQLiteでもインストールしてもらって実習をさせたり、常設CTFの問題を解いてもらうのでも良かったが、

  • やっぱりSQLの基本実習でもflagを取れたほうが楽しい
  • 純粋に構文を教えるよりも一から目的を達成するためのSQLを書いたほうがわかりやすい
  • 何よりも前回の講師が前触れもなくCTF形式で講義してたので焦った

ことから、自分でCTF形式のチュートリアルを作ることにした。

とりあえずCTFを解く上で必須のSELECT文、WHERE句、UNION句あたりをざっと説明しつつ、講義とシンクロする形で問題を解けるように用意した。
案外問題を作るのは難しくて、特にスキーマの構成やダミーデータの挿入には相当時間がかかった。
MySQLはインスタンスの切り離しが非常に面倒だったので、MySQLが必要な問題以外はSQLiteでごまかした。
Dockerとかvagrantとかkvmとか使えるようにならなきゃね

URLはこちら。
http://beginner-sqli.m1z0r3.ctf.ryotosaito.com

見た目はこんな感じ。

いいっすねぇ。
ちなみに使ったのはPHPフレームワークのLaravel。
標準で入っていたテンプレートをほぼ使った。BootStrapはさくっと作るときに助かる。

当日は3時間ほど使って講義と全8問の演習をしてもらった。
ほとんどの人が最後まで解けていたので良かった。
ちなみに8問目はオートメーションが必要なのでスクリプトのテンプレートを
http://challenge.beginner-sqli.m1z0r3.ctf.ryotosaito.com/tutorial8/hint.pyに置いている。

後日Githubにソースを公開した。
https://github.com/ryotosaito/beginner-sqli
README.mdをちゃんと作るとそれだけでしっかりしてるプロジェクトっぽいのでいいね。

カテゴリー CTF

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です