数据库
首页 > 数据库> > DVWA-SQL Injection (Bind) SQL盲注

DVWA-SQL Injection (Bind) SQL盲注

作者:互联网

盲注同于union select查询注入,盲注只能得到数据库回显的正确和错误,利用返回的正确和错误一个一个判断。

LOW

审计源码

<?php

if( isset( $_GET[ 'Submit' ] ) ) {
    // 获取 id 
    $id = $_GET[ 'id' ];
    // 定义存在为 false
    $exists = false;
    // 判断数据库类型
    switch ($_DVWA['SQLI_DB']) {
        // MYSQL数据库
        case MYSQL:
            // 数据库查询
            $query  = "SELECT first_name, last_name FROM users WHERE user_id = '$id';";
            $result = mysqli_query($GLOBALS["___mysqli_ston"],  $query ); // Removed 'or die' to suppress mysql errors
            // 定义存在还是 false
            $exists = false;
            // 判断数据库查询是否有结果
            if ($result !== false) {
                try {
                    // 获取返回结果中的函数
                    $exists = (mysqli_num_rows( $result ) > 0);
                } catch(Exception $e) {
                    // 没有结果定义为 false
                    $exists = false;
                }
            }
            ((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res);
            break;
        case SQLITE:
            global $sqlite_db_connection;

            $query  = "SELECT first_name, last_name FROM users WHERE user_id = '$id';";
            try {
                $results = $sqlite_db_connection->query($query);
                $row = $results->fetchArray();
                $exists = $row !== false;
            } catch(Exception $e) {
                $exists = false;
            }

            break;
    }
    // 判断数据库是否查询成功
    if ($exists) {
        // 查询成功
        echo '<pre>User ID exists in the database.</pre>';
    } else {
        // 找不到用户
        header( $_SERVER[ 'SERVER_PROTOCOL' ] . ' 404 Not Found' );

        // 插叙失败
        echo '<pre>User ID is MISSING from the database.</pre>';
    }

}

?>

根据查询结果,只返回了查询正确和错误两种结果,对传入的id没有进行过滤,所以可以直接进行注入
通过观察在$id左右加入了'',所以这是一个字符型的注入

标签:false,exists,Bind,查询,query,SQL,mysqli,Injection,id
来源: https://www.cnblogs.com/Junglezt/p/16329938.html