アプリケーションが想定しない文字列を実行することにより、データベースを不正に操作する攻撃はSQLインジェクションと呼ばれ、攻撃によってクレジットカード情報や住所などの重要な個人情報が流出した事例も存在します。「Lord of SQLInjection」は、そんなSQLインジェクションを駆使してダンジョンを攻略していくウェブサイトです。

Lord of SQLInjection

https://los.rubiya.kr/

まずはLord of SQLInjectionにアクセスして「[enter to the dungeon]」をクリック。



Lord of SQLInjectionを利用するのは初めてなので「Join」をクリック。



Lord of SQLInjectionで使用するID、メールアドレス、パスワードを入力して「Join」をクリックします。



先ほど登録したIDとパスワードを入力して「Login」をクリック。



敵を選択する画面が表示されました。最初の敵「gremlin」をクリックします。



ウェブサイトで実行されるSQLのクエリと、PHPコードが表示されました。PHPコードを参考にしながら、不正なSQLクエリを実行できれば敵を倒すことができます。



この問題では何か値が返ってくるようなクエリを実行すればいいので、URLに「?id=admin&pw=' or '1' = '1」を追加して実行。



「GREMLIN Clear!」と表示され、無事敵を倒すことができました。



問題を解いて敵を倒すと新しい敵に進めるようになります。



「cobolt」の問題はこんな感じ。パスワードにMD5のハッシュ値を入れる必要があるようです。



MD5のハッシュ値を入れるのもひとつの手ですが、今回は以下のようにURLに記述し、パスワード部分をコメントアウトしたクエリを実行することに。

?id=admin'%23


無事クリア。



「gremlin」や「cobolt」は不正なクエリを実行するタイプのSQLインジェクションでしたが、正しいパスワードをブラインドSQLインジェクションで解析するタイプの敵も存在します。



Lord of SQLInjectionの問題は「AllClear」も含めて合計で49問。問題がわからずつまずいても、主に韓国語の解説がネット上に豊富に存在しています。