代码审计实战—DWVA-sql-low
0x00 前言
如饥似渴的学习ing。
前置章节
代码审计——sql注入漏洞概述
0x01 start
首先准备一个DVWA的源码。自己找也行,我这里有一个弄好的,直接下载就可以了。
https://blog.****.net/qq_36869808/article/details/83029520
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’
这个时候就会造成攻击。
貌似有一丢丢简单了。