news 2026/4/16 11:55:50

网安新手DVWA靶场详细通关实战教程,网络安全零基础入门到精通实战教程!

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
网安新手DVWA靶场详细通关实战教程,网络安全零基础入门到精通实战教程!

介绍

Damn Vulnerable WebApplication(DVWA)是一个用来进行安全脆弱性鉴定的PHP/MySQL Web应用,旨在安全专业人员测试自己的专业技能和工具提供合法的环境,帮助Web开发者更好的理解Web应用安全防范的过程。

DVWA共有十个模块,分别是Brute Force、CommandInjection、CSRF、File Inclusion、File Upload、Insecure CAPTCHE、SQL Injection、SQL Injection(Blind)、XSS(Reflected)。DVWA分为low、medium、high和impossible四个等级。

环境搭建

2.1 安装XAMPP

XAMPP是一个集成的易于安装的WEB环境部署包,其中包括了Apache,MySQL,PHP,Perl等。这样可以方便部署,不用单个去安装需要的服务。

下载xampp-win32-7.1.11-0-VC14-installer.exe进行安装即可。安装完成后开启Apache和MySQL服务以供DVWA部署使用。

2.2 部署DVWA

将下载好的DVWA-master.zip解压到DVWA文件夹中,将php文件所在文件夹放入Apache服务的默认网站目录D:\xampp\htdocs中即可。之后利用浏览器打开http://127.0.0.1/dvwa/setup.php进行安装。出现如下提示,按要求进行后再次进行安装,得到如下页面。

数据库在这里可以创建或者重置,在dvwa目录下的config\config.inc.php中可以查看数据库的初始设置,这里点击Create/Reset Database。点击后显示不能连接到mysql,其实是要dvwa的数据写入到MySQL服务中去,但是MySQL的默认用户名和密码与dvwa下的登录MySQL密码不多,要想使用MySQL就需要修改config.inc.php中的用户和登录密码为XAMPP中MySQL的默认用户名和密码。

XAMPP中MySQL用户名和密码在\xampp\phpMyAdmin下的config.inc.php中,phpMyAdmin是使用PHP语言编写,可以通过互联网控制和操作MySQL的,进入发现默认用户名为root,密码为空,要想修改密码,需要先进入phpMyAdmin页面,点击账户,然后选择root账户修改权限,选择修改密码,这里可以生成复杂密码,设置为root/5211,而后将config.inc.php中的密码设置为5211,设置如图

另外设置dvwa登录MySQL的配置文件config.inc.php,将其设置为root/5211后,再次点击Create/ResetDatabase即可。设置和效果如图

2.3 登录

登录http://127.0.0.1/dvwa/login.php即可完成登录,DVWA的默认账号在如下路径中可以找到,结果如图

利用admin/password登录成功,结果如图

Brute Force

暴力破解,是指利用密码字典,使用穷举法猜出密码口令,是现在最广泛的的攻击手段之一,一般都是将数据库全部拷贝下来完成脱库,然后洗库,最后撞库时候用暴力破解完成。

3.1 Low等级

3.1.1 漏洞分析

设置为Low状态,代码如下,发现只是验证了Login是否被设置,没有任何防爆破机制,且对username和password没有任何过滤机制,只是对password执行了md5处理,有明显的SQL注入。

3.1.2 利用Burp进行爆破

在用户名密码处随意输入,截取登录请求如下

将其复制到Intruder中,设置username和password参数为payload,设置爆破方式为ClusterBomb,如图

之后点击Payloads选项卡载入字典,这里选择的是交叉模式,会将所有的组合进行尝试,如图

点击Start attack,进行爆破,这里选择的是Burp自带的字典,本身就有很多内容,同时要执行交叉模式种类就会更多,所以该方法除非是去进行撞库或者知道某用户用户名去进行才比较合适。这里自己导入一些用户名和密码进行测试即可。因为登录失败都会返回Username and/or password incorrect.所以可以在Options选项卡的Grep-Extract添加此筛选条件,对没有该返回项的请求进行分析,发现为正确用户名和密码。当然我们也可以根据返回包的长度发现,错误请求的返回包长度都一致,而正确请求的会出现差别。结果如下

3.1.3 利用SQL注入进行登录

在知道用户名的情况下可以利用sql注入实现登录,Username填写admin’ #,Password填写空,则登录成功效果如下

当然可以设置Username为admin’ or ‘1’ = ‘1,Password填写空,因为TRUE or Trueand False和True or False and False都为True,所以’1’ = '2或者1='2都可以,只要最后满足sql语句即可,登录成功效果如下

3.2 Medium等级

3.2.1 漏洞分析

设置为Medium等级,查看源码如下

根据源码发现,在Low等级的基础上,利用mysqli_real_escape_string是将sql语句中的一些特殊字符进行转义(‘、" ),这样就可以达到防止sql注入的目的,具体的原理如下,不转义输入admin’ #后,会执行如下的sql语句SELECT * FROM `users` WHERE user= ‘admin’ #’ AND password = ‘KaTeX parse error: Undefined control sequence: \* at position 38: …成如下sql语句SELECT \̲*̲ FROM \`users\`…pass’;从而无法完成注入。但是这种办法可以利用编码的漏洞来实现注入,如果将编码方式改为默认以外的方式,服务器就无法进行识别,从而不能进行转义,仍然变成第一个语句的情况实现绕过(好像高版本以及修复该问题,而且如果是mysqli应该没有相关漏洞)。之后源码里使用了sleep(2)的策略,但是仍然无法避免爆破。

3.2.2 利用Burp进行爆破

使用Low中的配置进行爆破,当然由于还是采用休眠两秒爆破的时间会有点慢,如果在不知道一定信息的话,这种方式很不可取,爆破仍然按Low等级那样处理,结果如图

3.3 High等级

3.3.1 漏洞分析

设置为High等级,查看源码如下

可以发现这里在发送请求时候加入了Token验证,每次请求的token都是上次返回页面中得到的,所以这里想要爆破的话首先要获得上次页面中返回的token才可以。用户名做了stripslashes(过滤反斜杠)和mysqli_real_escape_string操作可以防止sql注入。

3.3.2 Beautiful Soup获取响应token进行爆破

这里需要获取上一次请求返回的token,这里我们刷新登录界面,截取请求如下

然后查看返回页面中token的位置

再截取登录请求,了解登录请求数据

这里利用Python的BeautifulSoup库,创建抓取网页中token的函数,先从刷新的登录页面中抓取token,而后发送登录请求,得到响应的状态码长度和token,然后用获得的token进行下次请求完成爆破,这里可以在Python中打印结果,也可以从Burp中获取每次请求长度来判断结果。

3.4 Impossible等级

设置为Impossible,查看源码,发现设置了错误次数,当检测到3次错误以后账户被锁定15分,可以有效的防止爆破。

另外在sql查询时候,采用了PDO机制,该机制将查询的变量参数化,首先发送sql模板,然后把传入的参数只做查询处理,不做语意解释,传递的任何参数都会被当做字符串进行处理,这样每次查询的sql语句就会固定,不会发生注入现象。

网络安全学习资源分享:

给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

因篇幅有限,仅展示部分资料,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,请看下方扫描即可前往获取


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/14 7:01:04

LobeChat售后服务流程指引生成

LobeChat:构建智能售后服务系统的现代技术实践 在企业服务数字化转型的浪潮中,客户对响应速度与服务质量的期待正以前所未有的速度攀升。一个典型的场景是:用户凌晨提交订单问题,希望立刻获得物流状态;技术支持请求不能…

作者头像 李华
网站建设 2026/4/14 16:12:41

软件测试必知:Bug测试该如何进行

Bug,即软件中的缺陷或错误,可能导致软件功能异常、性能下降甚至系统崩溃。因此,通过Bug测试来发现并修复这些潜在问题,对于确保软件质量至关重要。 Bug测试的基本原则 1.尽早测试:软件开发过程中,应尽早进…

作者头像 李华
网站建设 2026/4/11 8:33:07

设备管理系统选型指南:5大要素避免踩坑

生产线意外停机一小时的产值损失、关键设备“带病作业”导致的良品率下滑、维修计划混乱造成的资源浪费——这些企业运营中的切肤之痛,根源往往在于设备管理的落后与无序。设备管理系统(EMS/EAM)的选择绝非简单采购一款软件,而是引…

作者头像 李华
网站建设 2026/4/16 10:18:37

ensp之BGP

任务要求:IPV4: 1.EBGPa.AR1与AR2是EBGP邻居关系,使用物理直连接口建立邻居b.AR4与AR5是EBGP邻居关系,使用Loopback0建立邻居 2.IBGPAR2--AR3,AR3--AR4,AR2--AR4建立IBGP邻居关系R1的配置如下:R…

作者头像 李华
网站建设 2026/4/16 11:55:16

AI 运维的六大致命陷阱:为什么你的 LLM 落地总在“画饼”?

大模型(LLM)的出现,让 AIOps 迎来了理论上的“智能涌现”。然而,从 POC(概念验证)走向大规模生产环境,许多企业发现效果并不如预期。这并非 LLM 本身无能,而是我们在 认知、数据、技…

作者头像 李华