DVWA-SQL Injection (Bind) SQL盲注
阿新 • • 發佈:2022-05-31
盲注同於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
左右加入了''
,所以這是一個字元型的注入