WebGoatを用いたSQLインジェクション #04

LAB: SQL Injection

 WebGoatの「String SQL Injection」及び「Numeric SQL Injection」を終えたら,次に「LAB: SQL Injection」に取り組みます.この問題は全部で4つのステージで構成されています.

  • stage1
  • stage2
  • stage3
  • stage4

Stage1

問題

 ステージ1ではString SQL Ingectionを用いてユーザー認証を回避することが目標です.「Goat Hills Financial Human Resources」という架空の会社でのサービスで.社長である「Neville」という人のアカウントに正しいパスワードなしでログインします.Nevilleのアカウントでは,全プロフィールを閲覧できたり,検索・アカウント作成・アカウント消去ができます.

 今回も手法としては「String SQL Injection」と同じなので試して見ましょう.

 

解答

  1. ユーザー名を「Neville Barthlomew」にする.このとき,パスワードは入れず,Loginボタンも押さない.

    f:id:y-cubed:20170612182405p:plain

  2. firefoxのメニューバーから,ツール「Tamper Data」を選択する.
  3. 出てきた「Tamper Data - Ongoing requests」のウィンドウの左上にある「Start Temper」ボタンを押す.

    f:id:y-cubed:20170612182635p:plain

  4. 出てきた「Tamper with request?」のウィンドウの「Tamper」ボタンをクリックする.

    f:id:y-cubed:20170612183005p:plain

  5. 出てきた「Tamper Popup」のウィンドウをみるとパスワードを入力するフィールドがあることがわかる.ここに「String SQL Injection」と同じように「x' OR 'a'='a」を入力し,「ok」を押す.

    f:id:y-cubed:20170612183257p:plain

  6. 正解を知らせる表示が出ることを確認する.実際に,全スタッフのプロフィールを表示・作成・削除できることを確かめる.
    ※ 他のポップアップが出た場合は,「temper」→「ok」の順でポップアップを消す.他のリクエストをtamperするか否かを聞いているだけのポップアップなので,対応しない場合処理が止まってしまう.

    f:id:y-cubed:20170612183410p:plain

 

Stage2 

問題 

 Parameterized Query #1 (解説省略)