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問目はオートメーションが必要なのでスクリプトのテンプレートを
後日Githubにソースを公開した。
https://github.com/ryotosaito/beginner-sqli
README.mdをちゃんと作るとそれだけでしっかりしてるプロジェクトっぽいのでいいね。
コメント
こんばんは。
Sqlインジェクションを最近勉強しています。
チュートリアル用のサイトではsqlの基本的な構文から、応用まで学べて本当に勉強になりました。