程式碼審計實戰—DWVA-sql-low
阿新 • • 發佈:2019-02-04
0x00 前言
0x01 start
1. 黑盒測試
開啟DVWA-SQL,調整成low。
1.1 單引號測試
報錯。
1.2 # 進行註釋
1.3 使用1’ or 1=1 #進行測試
1.4 使用1’ union select 1,database()測試
2.百盒測試
我們來看原始碼。
<?php
if( isset( $_REQUEST[ 'Submit' ] ) ) {
// Get input
$id = $_REQUEST[ 'id' ];
// 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
$html .= "<pre>ID: {$id}<br />First name: {$first}<br />Surname: {$last}</pre>";
}
mysqli_close($GLOBALS["___mysqli_ston"]);
}
?>
使用搜索,select啥的。。。不過這裡貌似不需要搜尋。。。直接就有。
可以清楚的看到
直接拿到使用者輸入的資料,沒有進行過濾。
直接引用資料
SELECT first_name, last_name FROM users WHERE user_id = ‘$id’
這個時候就會造成攻擊。
貌似有一丟丟簡單了。