0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

DVWA(SQLインジェクション)全レベルの脆弱性について

Posted at

前提

目標

  • 脆弱性の理解を深める。

手順概要

  • 大まかな挙動を把握する
  • コードを見て脆弱性をみつける
  • コードの脆弱性を攻撃する

内容

###挙動の把握

low

  • 入力値がクエリに乗っかりGETを投げる
  • sqlの結果が全て下部に転写される

image.png

medium

  • selectBoxのoption値をPOST
  • sqlの結果が全て下部に転写される

image.png

high

  • クリックすると別windowが開く
  • 別windowでidを入力
  • 元の画面にsqlの結果が全て下部に転写される

image.png

コードを確認

low

  • 入力値がそのまま格納される。
<?php
    $id = $_REQUEST[ 'id' ];

    // Check database
    $query  = "SELECT first_name, last_name FROM users WHERE user_id = '$id';"; 
?> 

medium

  • urlからの入力や、文字列の直接入力はできない。
  • mysqli_real_escape_stringで特殊文字をエスケープ
<?php
    $id = $_POST[ 'id' ];

    $id = mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $id);

    $query  = "SELECT first_name, last_name FROM users WHERE user_id = $id;"; 
?> 

high

  • 文字のエスケープはない。
  • 別画面で入力したIDを読み取る。(別画面と元の画面の双方がないと表示できない)
  • limit 1で1つだけ表示になっている。
<?php
    // Get input
    $id = $_SESSION[ 'id' ];

    // Check database
    $query  = "SELECT first_name, last_name FROM users WHERE user_id = '$id' LIMIT 1;"; 
?>

impossible

  • tokenチェック
  • is_numericで数値かどうかの判定
<?php
    // Check Anti-CSRF token
    checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );

    // Get input
    $id = $_GET[ 'id' ];

    // Was a number entered?
    if(is_numeric( $id )) {
        // Check the database
    } 
?>

脆弱性を攻撃する

low

  • 防御無しのため、ストレートに攻撃する。
  • 1' or 'a'='a

image.png

medium

  • 特殊文字はエスケープされるので、特殊文字は使用しない。
  • 1 or true

image.png

high

  • limit 1を外したいので#でコメントアウトする
  • 特殊文字はエスケープされていないのでそのままでいく。
  • 1' or 'a'='a' #

image.png

impossible

  • 無理っぽい
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?