代码审计实战—DWVA-sql-low

0x00 前言

如饥似渴的学习ing。
前置章节
代码审计——sql注入漏洞概述

0x01 start

首先准备一个DVWA的源码。自己找也行,我这里有一个弄好的,直接下载就可以了。
https://blog.****.net/qq_36869808/article/details/83029520

1. 黑盒测试

打开DVWA-SQL,调整成low。

代码审计实战—DWVA-sql-low

1.1 单引号测试

代码审计实战—DWVA-sql-low
报错。

1.2 # 进行注释

代码审计实战—DWVA-sql-low

1.3 使用1’ or 1=1 #进行测试

代码审计实战—DWVA-sql-low

1.4 使用1’ union select 1,database()测试

代码审计实战—DWVA-sql-low

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啥的。。。不过这里貌似不需要搜索。。。直接就有。

可以清楚的看到
代码审计实战—DWVA-sql-low
直接拿到用户输入的数据,没有进行过滤。
直接引用数据
SELECT first_name, last_name FROM users WHERE user_id = ‘$id’
这个时候就会造成攻击。
貌似有一丢丢简单了。