天天看點

DVWA學習暴力破解low級别

DVWA學習(一)

暴力破解low 級别

<?php

if( isset( $_GET[ 'Login' ] ) ) {

    // Get username

    $user = $_GET[ 'username' ];

    // Get password

    $pass = $_GET[ 'password' ];

    $pass = md5( $pass );

    // Check the database

    $query  = "SELECT * FROM `users` WHERE user = '$user' AND password = '$pass';";

    $result = mysql_query( $query ) or die( '<pre>' . mysql_error() . '</pre>' );

    if( $result && mysql_num_rows( $result ) == 1 ) {

        // Get users details

        $avatar = mysql_result( $result, 0, "avatar" );

        // Login successful

        echo "<p>Welcome to the password protected area {$user}</p>";

        echo "<img src=\"{$avatar}\" />";

    }

    else {

        // Login failed

        echo "<pre><br />Username and/or password incorrect.</pre>";

    }

    mysql_close();

}

?>

PHP解釋

從LOW級别的代碼中可以看到,以GET的方式傳送USERname和password

通過SQL從USER表中查詢是否有以GET方式傳輸的兩個值,進行MYSQL查詢

查詢的結果存儲在一個變量中,如果查詢到資料庫中有這麼一個記錄

傳回一個字段值

輸出Welcome to the password protected area {$user}

<img src=\"{$avatar}\" />

DVWA學習暴力破解low級别

若密碼錯誤(die()+沒有一條記錄)

輸出

echo "<pre><br />Username and/or password incorrect.</pre>";

代碼分析:

該代碼将輸入值直接帶入SQL查詢,依據傳回記錄情況判斷登陸是否成功。

漏洞利用:

該代碼存在SQL注入漏洞,由于沒有對輸入的字元做任何的過濾便直接帶入SQL查詢,也就是說可以在輸入中構造SQL使其到資料庫中查詢。

漏洞細節:

admin’ or ‘a’=’a

admin#

對于low級别的了解:

這是low級别的查詢語句(單引号是否可忽略)

SELECT * FROM `users` WHERE user = '$user' AND password = '$pass'

若忽略單引号注入替換:

admin or 1=1

帶入SQL:

 SELECT * FROM `users` WHERE user = ' admin or 1=1' AND password = '$pass'

帶入資料庫查詢的結果:

DVWA學習暴力破解low級别

無法查詢出結果

帶上單引号:

admin’ or ‘a’=’a

帶入查詢:

 SELECT * FROM `users` WHERE user = 'admin’ or ‘a’=’a' AND password = '$pass'

DVWA學習暴力破解low級别

注意帶入:

Admin’#在資料庫中無法查詢成功

但是在DVWA中可成功爆破

原因如下:

缺少“;”

原本的;被#注釋掉了

DVWA學習暴力破解low級别

繼續閱讀