0


sqlmap自动化漏洞利用(DVWA初、中、高)

前两篇文章我们安装了kali,并在我们物理机中安装靶场DVWA,今天我们来看看如何用kali自带的工具sqlmap进行SQL注入漏洞利用。

一、环境配备

1.我们先在我们kali中打开DVWA,打开方式为http://[DVWA所在主机IP]/DVWA,例如DVWA所在主机IP为192.168.10.10,则打开链接为http://192.168.10.10/DVWA。(windows系统IP查询命令:ipconfig,Linux系统IP查询命令:ifconfig)。
在这里插入图片描述
2.输入账号密码(默认admin/password)登录DVWA后,点击"DVWA Security",首先将难度调整为Low。(后续对中、高级测试时逐渐修改难度等级)
在这里插入图片描述
3.现在点击SQL Injection,可以看到这里有输入接口,同时我们也可以知道不同页面显示的访问地址不一样。我们在查询接口进行输入查询,这时候生成的这个地址也就是我们的目标注入点,如你的DVWA所在IP地址为192.168.10.10
,输入1进行查询,则下面我们所提到的目标注入点就是http://192.168.10.10/DVWA/vulnerabilities/sqli/?id=1&Submit=Submit#
在这里插入图片描述

二、sqlmap使用

###(一)DVWA初级

1.打开Kali的sqlmap,输入sqlmap -v可以看到它已经kali自带安装有了。
在这里插入图片描述
2.注入探测
测试指令:

sqlmap -u "[目标注入点]"

在这里插入图片描述我们可以看到它爆出了有SQL注入漏洞,而且可以探测到数据库是mysql,所在操作系统为windows。
而当我们想探测它的数据库内容的时候,则会要求我们做验证,因为我们的DVWA是需要登录的。
在这里插入图片描述
3.登录探测
这时候我们知道DVWA账户密码,并且已经登录了,那我们就要把我们已经登录授权给到sqlmap。
(1)在浏览器登录DVWA并转到我们的测试界面后,打开火狐的开发者模式,找到Network。
在这里插入图片描述

(2)点击重新加载页面,选择第一个数据包,找到cookie值。
在这里插入图片描述(3)将cookie值复制下来,进行登录探测,检测指令:

sqlmap -u "[目标注入点]" --cookie="[站点cookie]"

在这里插入图片描述
4.获取所有数据库名
探测出有注入点,又有了登录授权,我们可以开始探测数据库里面的内容了。获取数据库名:

sqlmap -u "[目标注入点]" --cookie="[站点cookie]" --dbs

可以看到列出了5个数据库的名称。
在这里插入图片描述
5.获取指定数据库中表名
我们可以看看dvwa数据库里面有哪些表。获取指定数据库表名:

sqlmap -u "[目标注入点]" --cookie="[站点cookie]" -D [数据库名] --tables

可以看到有一个电子书表、一个用户表。
在这里插入图片描述
6.获取指定表中的所有数据
看到用户列表,我们自然是要看一下的。可以直接查看用户表所有数据:

sqlmap -u "[目标注入点]" --cookie="[站点cookie]" -D [数据库名] -T [表名] --dump

我们可以看到它列出了dvwa数据库users表里所有的数据,包括账户名和加密存储的账户密码。
在这里插入图片描述

7.获取指定表中列名
如果遇到数据比较多的表全部列举出来会显示很乱,我们可以先获取表中的列名。

sqlmap -u "[目标注入点]" --cookie="[站点cookie]" -D [数据库名] -T [表名] --columns

在这里插入图片描述
8.获取指定列数据
我们知道列名之后就可以查询指定列的数据,命令:

sqlmap -u "[目标注入点]" --cookie="[站点cookie]" -D [数据库名] -T [表名] -C[列名],[列名] --dump

我们这里查询账户名和密码,由于mysql数据库对密码字段做了哈希,命令执行过程中会询问你是否进行解析,我这里选了yes。
在这里插入图片描述这样我们就完成了一次使用sqlmap对dvwa简单级别的的sql注入测试,成功拿到了dvwa的所有账户名和密码。

###(二)DVWA中级
上面我们对初级做了测试,现在我们试一下对中级难度的DVWA是否同样可以进行注入呢。
1.调整靶场难度等级为中级。
在这里插入图片描述
2.确定注入点
我们可以看到难度调整为中级之后,数据请求方式由初级使用的get方式变成了post,查询输入接口由手动输入变成了选择方式,且在url不会直接显示我们的查询请求。
在这里插入图片描述

3.这时候我们如果依然采用像初级一样的执行语句无法查询到任何注入点。
在这里插入图片描述它会告诉我们缺少请求输入字段数据。
在这里插入图片描述
4.我们可以发现相比于初级,网站查询时所给出的url缺少了“id=1&Submit=Submit”字段,这一字段不显示在url里而是包含在请求数据包里。
在这里插入图片描述
5.我们将request字段加入我们的测试语句中:

sqlmap -u "[目标注入点]" --data "[request]"  --cookie="[站点cookie]"

在这里插入图片描述
6.查询账户名、密码,测试语句:

sqlmap -u "[目标注入点]" --data "[request]"  --cookie="[站点cookie]" -D [数据库名] -T[表名] -C[列名],[列名] --dump

在这里插入图片描述这时候我们就拿到了数据库的数据了。

###(三)DVWA高级
1.将DVWA难度调整为high之后,我们可以看到high等级的输入查询在弹窗进行输入,而数据显示确在原窗口进行显示。原窗口数据包请求方式为get,弹出的输入窗口请求方式为post。
在这里插入图片描述
2.这时候我们需要用到联合查询命令‘second-url’。测试语句:

sqlmap -u "[数据提交页面url]" --data "[request]"  --second-u "[数据显示页面url]" --cookie="[站点cookie]"

在这里插入图片描述3.获取账户名、密码,测试命令:

sqlmap -u "[数据提交页面url]" --data "[request]"  --second-u "[数据显示页面url]" --cookie="[站点cookie]"  -D [数据库名] -T[表名] -C[列名],[列名] --dump

在这里插入图片描述
###(三)DVWA(Impossible)
前面的初、中、高级其实都是通过限制数据输入来起到防护作用,而我们在手工注入的时候通过使用burpsuit等抓包工具篡改数据包都是可以绕过它的限制的。Impossible等级则是在数据传到后端之后先进行了格式验证,然后还使用了PDO预处理。人家都说了Impossible,我们就等有能力了再挣扎吧,目前是无法进行注入的。

标签: web安全

本文转载自: https://blog.csdn.net/qq_42620328/article/details/127315325
版权归原作者 PisaYu 所有, 如有侵权,请联系我们删除。

“sqlmap自动化漏洞利用(DVWA初、中、高)”的评论:

还没有评论