☰
DVWA靶场搭建保姆级教程:零基础起步的安全测试练习环境
2026/10/20 14:50:46 网站建设 项目流程

做安全测试这一行,很多新手问我的第一个问题往往是“我怎么入门”。我一般不会直接甩一堆书单或者视频,而是先让他们在自己电脑上搭一个DVWA靶场。原因很简单:安全测试是动手的活儿,光看不练等于白学,你总得有个能合法练手的地方。DVWA就是一个开源Web靶场,专门用来给安全学习者和测试人员做漏洞练习。它不涉及任何真实业务系统,完完全全跑在你自己电脑上,把各种常见Web漏洞做成一个个可交互的实验关卡,你可以放心地在这里反复测试、验证概念、积累手感,不用担心闯祸。

这篇教程我会把你当成一个零基础的小白,从下载安装包到浏览器里弹出登录框,全程保姆级拆解。同时,我会把每一步为什么这么做也讲清楚,不光是“你照着点”,而是让你理解背后的逻辑。后面我还会把DVWA里每个漏洞模块练什么、安全等级怎么设置、新手常踩的坑怎么排都整理成一份速查内容。如果你正准备入门渗透测试,或者想找个地方系统练习Web漏洞,这篇文章可以直接收藏,当作你的靶场搭建手册来用。

DVWA全称是Damn Vulnerable Web Application,直译过来就是“一个故意做得漏洞百出的Web应用”。你可能会好奇,谁会把一个网站故意做得漏洞百出?这正是它的价值所在。

1. 为什么入门渗透测试要先从DVWA靶场开始

1.1 DVWA是什么,它在安全学习里扮演什么角色

DVWA是一个基于PHP和MySQL的Web应用,里面内置了SQL注入、XSS跨站脚本、文件上传、CSRF跨站请求伪造、命令注入等十多个常见漏洞模块。它被设计成一个“安全的靶场”——你想怎么打就怎么打,打坏了重置一下又能继续练。它之所以在安全学习圈里这么流行,核心原因是它把“漏洞”这件事做成了可重复、可控制、可观察的实验环境。

你在真实网站上不能随便做注入测试,那是违法的,也会影响别人的业务。但在DVWA里,这个网站就是为你准备的,页面上的漏洞都是故意留出来的,所有操作都在你自己电脑上完成,完全合法且安全。所以DVWA最适合三类人:零基础想入门渗透测试的新手、需要备课或演示漏洞原理的安全讲师、以及想快速验证某个安全工具或思路的安全测试人员。

我第一次接触DVWA是在某次内部安全培训上,讲师让我们每个人在自己的虚拟机里搭一个。当时我搭完后第一感觉是:原来SQL注入不是电影里那种一闪而过的高深技巧,而是有固定套路和规律可循的东西。这种“亲手把漏洞跑起来”的感觉,比看一百页理论都管用。所以我后来带新人,第一步永远是让他们搭DVWA,先建立对漏洞的“手感”。

1.2 靶场里到底有哪些漏洞模块可以练手

DVWA从最初的版本到现在的版本,模块经过了不少调整,但核心的这几个一直都在。我把它们分成几类,方便你后面练习的时候心里有数:

  • 注入类:SQL Injection(SQL注入)、SQL Injection (Blind)(SQL盲注)、Command Injection(命令注入)。
  • 跨站类:XSS (Reflected)(反射型XSS)、XSS (Stored)(存储型XSS)、XSS (DOM)(DOM型XSS)。
  • 请求伪造类:CSRF(跨站请求伪造)。
  • 文件操作类:File Upload(文件上传漏洞)、File Inclusion(文件包含漏洞)。
  • 其他类:Brute Force(暴力破解)、Weak Session IDs(弱会话ID)、Insecure CAPTCHA(不安全的验证码)、CSP Bypass(CSP绕过)、JavaScript(前端JavaScript代码审计)。

每一个模块都代表一类真实世界中常见的Web漏洞。也就是说,你在DVWA里练会的每一个点,日后都能在真实系统的安全测试中找到对应的影子。它相当于给新手画了一张Web漏洞的地图,你沿着这张图走,能把Web安全的攻击面摸个七七八八。

每个漏洞模块还分了四个安全等级:Low(低级)、Medium(中级)、High(高级)、Impossible(不可能)。等级越低,代码里的防护越少,漏洞越明显;等级越高,防护措施越完整,你需要的绕过技巧也越多。等你把Low级玩明白了,再切到Medium去研究绕过方式,这个过程本身就是一条非常有价值的学习路线。

1.3 不建议一上来就学“真环境测试”的原因

我见过不少新人,理论还没学明白,就想着去找个“真实站点”练手。这是大忌。一方面,对未授权的系统做安全测试是违法违规行为,这个红线绝不能碰;另一方面,真实系统的环境极其复杂,有WAF、有各种访问控制,新手上去根本不知道从哪里入手,很容易被打击信心。

所以靶场的意义,就是给你一个“受保护的犯错空间”。在DVWA里,你可以看到漏洞源码,可以在暴露的SQL语句里反复试错,可以一边看代码一边理解为什么这样写就有漏洞。这种“源码级”的学习体验,是任何真实系统都给不了你的。等你把DVWA里的漏洞都过了一遍,知道注入的命令长什么样,知道XSS的载荷为什么能弹窗,再去看真实系统的时候,就不会两眼一抹黑了。

2. 搭靶场前的准备工作:环境选型和材料清单

2.1 环境选型:为什么推荐集成环境而不是手动装LAMP

DVWA跑起来需要一个PHP环境、一个MySQL数据库,再加一个Web服务器。理论上你可以自己去官网分别下载PHP、MySQL、Apache,然后手动配置,让他们三个协同工作。我当年第一次搭就是这么干的,折腾了一整天,最后败在了PHP扩展配置上。对于新手来说,这条路太痛苦了,每一步都有无数个坑等着你。

所以我强烈建议你用集成环境。集成环境的意思,就是有人把Apache、MySQL、PHP打包在一起,装一个软件就全都有了,而且默认配置好了端口和关联关系。现在国内用的比较多的免费集成环境有小皮面板(其实是个Web管理面板)、PhpStudy、WampServer等,选一个你顺手的就行。我平时给新人推荐用的是集成环境软件,因为它自带一个图形界面,可以一键启动Apache和MySQL,还能方便地切换PHP版本,对新手极其友好。

有人可能会担心集成环境是不是不够“原生态”,影响以后学习。我的看法是,先跑起来再说。环境搭建是工具,不是目的。你的目标是练Web漏洞,而不是成为环境配置专家。先用集成环境把DVWA跑起来,把漏洞练明白,等你真有需要再手动搭建环境也不迟。一上来就跟环境较劲,很容易劝退。

2.2 需要准备的软件和版本注意事项

  • 集成环境软件一个,比如小皮面板或PhpStudy,建议去官网下载最新版,安装时注意看有没有捆绑软件,装完把不需要的勾选都去掉。
  • DVWA安装包。去DVWA官网或GitHub的Releases页面下载最新的ZIP压缩包,下载后解压备用。
  • 浏览器,推荐用Chrome或Firefox,这些浏览器的开发者工具在做安全测试时非常有用。不要用IE,兼容性太差,调试起来会怀疑人生。

版本方面有个重要提醒:DVWA的代码更新频率不算高,它对PHP版本有一定要求。集成环境一般默认带的都是比较新的PHP版本(比如PHP 8以上),而DVWA官方目前对PHP 8的兼容性在部分模块上可能存在问题,比如Command Injection模块在高版本PHP下会失效。如果你遇到某个模块功能不正常,优先检查是不是PHP版本太高了。我的做法是,在集成环境面板里把PHP版本切到7.4,用PHP 7.4跑DVWA是最稳的搭配。

另外,DVWA需要PHP的一些扩展,比如mysqli扩展、gd图像库等。集成环境默认基本都带了,如果你安装后页面提示缺少某个扩展,去集成环境的面板里看看PHP扩展设置,把对应的扩展勾上,重启服务就好了。这个后面排查部分再详细说。

2.3 安装集成环境后的基础检查

软件装好后,先别急着一股脑往里扔DVWA代码,先把环境跑起来做个基础检查。打开集成环境面板,启动Apache和MySQL两个服务,看到状态变成已启动或绿色图标就说明基础服务正常。

然后打开浏览器,输入 http://127.0.0.1 访问本机地址。如果能看到集成环境自带的默认页面,恭喜你,Web服务和PHP解析都正常。如果打不开,大概率是端口被占用了,最常见的占用者是IIS、其他Web服务器软件或者某些系统进程。遇到端口占用,最简单的办法是把Apache的端口改成8080之类的非默认端口,改完再试一次。这里不必硬刚80端口,够用就行。

MySQL启动失败也很常见,多半是端口3306被占用,或者之前装过其他数据库服务冲突了。集成环境面板一般会带端口检测工具,它会提示你哪个端口被占。把占用3306的服务关掉,或者在面板里把MySQL端口改一个再启动。

基础检查通过后,环境的准备阶段就算完成了。接下来可以正式开始搭DVWA。这个阶段整台电脑只有你自己能看到这个靶场,别想着部署到云服务器上,本地练手完全够了,也最安全。

3. 保姆级搭建流程:从解压到登录全步骤

3.1 解压DVWA到Web目录

集成环境安装好之后,它会创建一个Web根目录,所有放在这个目录里的文件都能被浏览器访问到。以小皮面板为例,默认网站根目录一般在某个盘符下的WWW目录里;用PhpStudy的话,默认也是类似一个WWW目录。你打开这个目录,会看到里面自带了一些说明文件或默认页面。

现在把之前下载好的DVWA压缩包解压到这个Web根目录下。压缩包解压后是一个带版本的文件夹名,比如DVWA-master。这个文件夹名会影响到访问地址,为了方便后续访问,我建议你直接把解压出来的文件夹重命名为dvwa,全部字母小写,这样后面URL是 http://127.0.0.1/dvwa ,干净又好记。

重命名完,你可以在浏览器地址栏输入 http://127.0.0.1/dvwa 试试看,这时应该能看到DVWA的页面,只是页面底下一大堆红色的报错提示,告诉你数据库连不上,各项配置还没就绪。这是正常的,因为配置文件还没创建,数据库也还没初始化。别慌,继续往下走。

3.2 数据库配置文件的修改要点

DVWA有一个配置文件模板,文件名是config.inc.php.dist,放在DVWA目录下的config文件夹里。这个.dist后缀表示它是分发模板,你需要把它复制一份,把复制后的文件重命名为config.inc.php,然后在里面填上你的数据库信息。

打开config文件夹,你能看到一个示例配置文件或者config.inc.php.dist文件。复制一份出来,改名为config.inc.php。如果你看不到文件后缀名,先在文件夹选项里把“隐藏已知文件类型的扩展名”关掉,不然你复制出来的文件名还是带.dist结尾,DVWA根本读不到,后面会折腾半天。

然后用记事本或其他文本编辑器打开config.inc.php,找到下面这几项配置代码:

$_DVWA[ 'db_server' ] = '127.0.0.1'; $_DVWA[ 'db_database' ] = 'dvwa'; $_DVWA[ 'db_user' ] = 'root'; $_DVWA[ 'db_password' ] = ''; $_DVWA[ 'db_port' ] = '3306';

这里每一项都很关键,我给你解释一下:

  • db_server 是数据库地址,本地环境用127.0.0.1没错。
  • db_database 是数据库名,默认是dvwa,先保持默认,后面安装流程会自动创建这个库。
  • db_user 是数据库用户名,集成环境的MySQL默认用户名一般是root。
  • db_password 是数据库密码,这是最容易出问题的地方。很多集成环境的MySQL初始密码就是root,或者为空,也有的可能在安装时让你自己设置过。如果你填错密码,后面DVWA连不上数据库,会一直卡在红色报错界面。

我自己遇到比较多的情况是,小皮面板安装时MySQL的密码就是root,所以直接把 db_password 改成 'root' 就能通。如果你的集成环境在安装时自定义过MySQL密码,这里就填你设置的那个。实在不确定的话,可以回到集成环境面板里查看MySQL设置,或者用面板自带的命令行登录一下MySQL确认密码。

改完配置保存,关掉文件。到这里,DVWA的配置就完成了大半。

3.3 初始化数据库并完成首次登录

再次在浏览器里打开 http://127.0.0.1/dvwa/index.php ,页面会出现一个“Setup/Reset Database”按钮。点击这个按钮,DVWA会自动往MySQL里创建名为dvwa的数据库,并在里面建好所有需要的表和默认数据。如果一切顺利,页面会提示数据库已创建成功,然后你就能看到登录框了。

登录凭据是万事通账号:用户名 admin,密码 password。对,就是这么朴素。这是DVWA的默认管理员账号,密码固定为password。登录进去后,你就进入了DVWA的主界面。

这里插一个我踩过的坑:第一次点击Setup/Reset Database时,如果页面提示创建失败,十有八九是配置文件里的密码不对,或者MySQL服务没启动。你可以先去集成环境面板确认MySQL是启动状态,再回来看配置密码。还有一个情况是数据库用户root不允许远程连接,不过本地环境一般不会遇到,真遇到了就在面板里把MySQL权限里的允许远程连接打开。

还有一种常见情况:页面提示“Could not connect to the database”,但你的数据库密码明明是对的。这时候去检查一下是否在MySQL里已经存在了一个空的dvwa库,如果有,把它删掉再重新点Setup,有时候残留的空库会导致建表失败。这个坑我遇到过不止一次,排查起来血压容易升高。

3.4 把危险等级切到中级的操作

登录成功后,你会看到DVWA的主菜单和各个漏洞模块。首次登录后建议先把安全等级从默认的Impossible切到Medium,也就是中间档。我先给你解释一下为什么要切到Medium而不是直接玩Impossible。

DVWA默认会把安全等级设为Impossible,这个等级下所有漏洞模块都是安全修复后的代码,几乎无法复现漏洞。新手如果直接在这个等级下做测试,你会发现为什么注入不成功,XSS弹不了窗,就会一头雾水。所以你要先把等级调低,让漏洞“露出来”。

具体操作:登录后页面顶部有一个“Security”标签,点进去,你可以看到一个安全等级的下拉选择框,里面有Low、Medium、High、Impossible四个选项。默认是Impossible,你把它改成Medium,然后点击提交即可。我个人比较推荐先从中级开始练,因为低级下很多漏洞实在是太明显了,新手练完成就感低,而中级又不会太难,还能让你理解“防护不够强”,为后面学习高级绕过错觉打下基础。

调完等级后,你可以去各个模块看看,比如SQL Injection模块,输入一个单引号,你会发现页面报错,说明漏洞确实存在了。这种感觉很兴奋,但别急着到处乱点,接下来我会介绍每个模块练什么。

3.5 可选配置:文件包含模块的联动设置

DVWA里的File Inclusion(文件包含)模块在部分环境下会有一个前置要求,需要你在PHP配置文件里开启 allow_url_include。如果不开,文件包含模块的远程包含功能会失效,你只能练本地包含那部分。

这个开关在集成环境的PHP设置里能找到。你可以直接在集成环境面板中打开配置文件,搜索allow_url_include,把默认的Off改成On,然后重启Apache服务。改完以后,远程文件包含相关的实验就能正常做了。如果你一时找不到这个选项,先跳过也没关系,这个模块可以等后面用到时再回来配置,不影响其他模块的练习。

到这里,DVWA靶场已经完整地跑起来了,所有模块全部可用,你可以正式开始你的安全测试练习了。

4. 靶场功能详解:每个漏洞模块是干什么的

4.1 安全等级说明

前面提到了DVWA有四个安全等级,我再详细展开一下每个等级的特点,因为这直接影响你的练习策略。

  • Low(低级):代码完全没有做任何安全防护,漏洞赤裸裸地暴露在你面前。适合第一次接触某个漏洞时,用最简单的payload去验证漏洞存在,理解漏洞产生的根本原因。
  • Medium(中级):代码加入了一些基础过滤和防护,但这些防护有明显的缺陷,可以被绕过。新手在这个等级下可以体会到“有WAF也防不住”的思路博弈。
  • High(高级):代码的防护变得更严格,需要结合各种绕过技巧才能成功利用。这个等级比较考验你对漏洞原理的深入理解。
  • Impossible(不可能):代码是安全修复后的版本,把能用的防护都用了,漏洞基本无法利用。这个等级的作用是给你看“安全代码应该长什么样”。

我建议的学习节奏是:第一次接触一个模块,先在Medium等级下跑通一遍,看源码理解为什么有漏洞,再切到High等级练习绕过的思路,最后看Impossible等级的源码学习正确写法。四个等级对照着看同一段代码,你对“安全开发”的认知能上升一个层次。

4.2 漏洞模块逐个拆解

接下来我按模块逐个说一下,DVWA里能练到的东西是什么。

Brute Force(暴力破解):这是一个登录表单,没有做任何防爆破措施。你可以用Burp Suite这类工具去抓包,然后对用户名密码字段做字典爆破,理解弱口令形成的原因。这个模块是新手入门Burp Suite的好练手对象。

Command Injection(命令注入):这个模块会让你输入一个IP地址,然后后台用ping命令去执行。如果你在输入里拼接一些命令操作符,比如分号和管道符,就能执行额外的系统命令。这个模块能帮你理解为什么“命令拼接”是高危漏洞。

CSRF(跨站请求伪造):模块会让你修改密码,但请求里只有新旧密码,没有防CSRF的Token。你可以构造一个恶意链接,当受害者访问这个链接时,密码就被偷偷改了。这个模块对理解CSRF攻击流程非常有帮助。

File Inclusion(文件包含):代码里有一个文件参数,你可以把这个参数改成服务器上的其他文件路径,从而读取敏感文件。这个模块的难点在于路径的构造和远程包含的配置。

File Upload(文件上传):模块允许你上传文件到服务器,但低等级下没有任何类型校验。你可以上传一个PHP一句话木马,然后通过Webshell来测试文件上传漏洞的危害。这个模块也是所有搞Web安全的人必须吃透的。

Insecure CAPTCHA(不安全的验证码):这是一个带验证码的修改密码表单,但验证码校验流程存在缺陷,你可以拿不带正确验证码的请求直接绕过验证。这个模块帮你理解“流程缺陷”在业务逻辑漏洞中的重要性。

SQL Injection(SQL注入):这是DVWA里最经典的一个模块。你可以在输入框里提交SQL语句的片段,后台直接拼接SQL查询,导致数据库内容被读取或篡改。低等级下你可以直接输入单引号触发报错,也可以使用UNION查询拿数据。这个模块是你理解Web安全绕不开的一环。

SQL Injection (Blind)(SQL盲注):同样是SQL注入,但页面不会直接显示数据库报错信息,你需要根据页面的真假反应来逐字猜解数据。这个模块对锻炼逻辑思维很有效,是所有SQL注入类测试的进阶必练项目。

Weak Session IDs(弱会话ID):模块会展示一系列会话ID的生成过程,你可以观察这些ID的规律,猜测出后续的ID。这个模块对理解会话安全保护和会话固定攻击很有用。

XSS (DOM)(DOM型XSS):这个模块的漏洞在前端JavaScript代码里,通过修改URL参数来触发XSS。DOM型XSS是前端安全问题里最隐蔽的一种,值得反复练习。

XSS (Reflected)(反射型XSS):漏洞代码直接把用户输入的内容返回到了页面上,没有任何编码过滤。你在输入框里提交一个弹窗脚本,页面就会执行。这个模块是理解XSS基础原理的第一课。

XSS (Stored)(存储型XSS):漏洞代码会把用户输入的内容存到数据库里,下次任何人访问这个页面都会触发脚本。这个模块用于理解XSS蠕虫和持久化攻击的威胁。

CSP Bypass(CSP绕过):这个模块考验你对HTTP安全策略的掌握,你需要想办法绕过Content-Security-Policy的限制,让页面执行你注入的脚本。这属于进阶专项技能,新手可以放到后面练。

JavaScript模块:这个模块展示了一段前端JavaScript代码,要求你读懂它的逻辑并找到漏洞所在。它锻炼的是前端代码审计能力,等价于一个JavaScript逆向小游戏。

4.3 各模块适合的学习顺序

这么多模块,从哪开始练?我给新手推荐一个顺序,这个顺序是按照依赖关系排的,越前面的越基础,能为后面提供知识储备。

第一梯队:SQL Injection、XSS (Reflected)、XSS (Stored)。这三个是最基础的Web漏洞,也是面试和实战中出现频率最高的,建议先吃透。

第二梯队:Command Injection、File Upload、CSRF。这三个有各自独立的应用场景,理解了第一梯队的注入和跨站思路后,上手会很快。

第三梯队:SQL Injection (Blind)、File Inclusion、Brute Force、Weak Session IDs。这些模块需要一点工具辅助和逻辑推理,适合有基础后进阶。

第四梯队:Insecure CAPTCHA、CSP Bypass、JavaScript、XSS (DOM)。这些偏向逻辑漏洞和前端审计,可以放到最后系统研究。

按这个顺序练,每个模块都从Medium等级起步,你会在两个月内形成一套比较完整的Web漏洞排查思路。

5. 常见问题与排查经验速查表

搭DVWA的过程中,很多人都会卡在同样的几个问题上。我把这些高频问题整理成一个速查表,你遇到问题先来这里对照,基本能解决90%的坑。

现象可能原因解决办法
Apache启动失败80端口被占用改Apache端口为8080等非默认端口,或停掉占用进程
MySQL启动失败3306端口被占用在面板改MySQL端口,或关闭冲突进程
浏览器访问127.0.0.1显示404文件没放到Web根目录确认DVWA文件夹放到了正确的WWW目录
页面显示红色报错:Could not connect to the database配置文件里的密码错误或MySQL未启动检查集成环境MySQL的密码,修改config.inc.php里的参数
点击Setup Database无反应DVWA配置文件未改名为config.inc.php检查config目录下文件名,确保是config.inc.php而不是.dist后缀
数据库创建失败,提示表已存在之前残留了空的dvwa库用phpMyAdmin删掉dvwa库,重新点击Setup按钮
登录后页面提示PHP版本不支持PHP版本太高在集成环境面板把PHP切换到7.4版本,重启服务
Command Injection模块不执行PHP版本兼容性问题切换到PHP 7.x版本,这个模块在高版本PHP下容易失效
页面中文乱码编码问题DVWA界面本身是英文的,如有乱码检查浏览器字符编码是否为UTF-8

5.1 登录报错和数据库连不上的处理

数据库连不上是最常见的拦路虎,我单独拿出来多说几句。你打开DVWA首页,看到一大片红色报错,里面最关键的信息往往是“Could not connect to the database”或者“Access denied for user”。

Access denied的意思是身份验证失败,不是密码错了就是用户名错了。先去集成环境面板里确认数据库的默认用户名和密码,然后在config.inc.php里填一致。这里有个容易踩的坑:集成环境的MySQL密码可能在安装阶段被改动过,跟你想象的不一致。你可以用面板自带的命令行工具登录MySQL,手动验证一下账号密码能不能登进去,验证通过了再填到配置里。

还有一种情况是你本机装了多个数据库服务,比如之前自己装过MySQL或MariaDB,然后集成环境里又启动了一个MySQL,两个服务抢端口导致连上了错的数据库。这种属于环境冲突,最简单的解决办法是停掉多余的那个数据库服务,只保留集成环境自带的。

5.2 端口冲突和Apache启动失败

Apache启动失败的90%原因都是端口被占用。特别是Windows系统,IIS服务默认占用80端口,某些软件也会启动自己的Web服务占用80。你可以在命令行执行 netstat -ano | findstr ":80" 来查看是哪个进程占用了80端口,找到进程ID后去任务管理器里结束它,或者更省事的方式是把Apache的端口改成8080。

改端口的方法是:在集成环境面板中找到Apache的配置,通常在conf目录下的httpd.conf文件里,搜索Listen 80,改成Listen 8080,保存后重启Apache。注意这个改动不影响DVWA访问,只需要把访问地址改成 http://127.0.0.1:8080/dvwa 就行。

3306端口冲突也类似,如果你看到MySQL启动失败,先检查是不是有另一个MySQL实例在运行,或者3306被其他进程占用。集成环境面板提供了端口检测功能,直接用它查一下最快。

5.3 页面乱码或PHP版本兼容问题

乱码问题一般是浏览器编码设置不对或者PHP默认字符集没配置好。不过DVWA的界面本身就是英文,如果你看到界面上出现很多“推荐”字样,那可能不是乱码,而是你下载了某个中文汉化版DVWA。我建议新手还是用官方原版,因为汉化版的代码可能被人改过,你练习漏洞时看到的代码逻辑可能跟原版有差异,影响学习。

PHP版本兼容问题,我前面提到了,Command Injection模块在PHP 8及以上版本会失效,现象是提交IP后页面没有任何回显,或者直接报错。这个不是配置问题,而是PHP 8对某些字符串函数的处理方式变了导致命令拼接逻辑出问题。解决办法就是切换到PHP 7.4,稳定可靠。

如果你在集成环境面板里看到可用的PHP版本,一般会有好几个,切换到PHP 7.4之后重启Apache,再去测一下Command Injection模块,应该就正常了。如果面板里没有PHP 7.4,那就去扩展里下载一个,或者直接换一个带多版本PHP的集成环境。

6. 新手最容易踩的坑和我的实操心得

6.1 新手常犯的五个错误

我已经带过不少新人搭DVWA,回头看大家最容易犯的错误,基本集中在下面这五件事上。

第一件,配置文件不重命名。很多人把config.inc.php.dist复制出来,复制完还是叫config.inc.php.dist,根本没改文件名。DVWA读配置文件是按固定名字查找的,你文件名不对它就读不到,就会出现数据库连接失败或页面配置信息缺失。这个错误非常普遍,我建议你在复制完文件后,检查一下config目录里是不是有一个叫config.inc.php的文件,确认没有.dist后缀。

第二件,直接死在默认安全等级上。登录后看到安全等级是Impossible,就直接在那上面试漏洞,发现什么都测试不出来,以为靶场坏了。我自己当年也干过这事。记住,Impossible等级是给开发者看修复代码用的,不是给新手测试漏洞用的,一定要先切到Medium或Low。

第三件,数据库密码搞不清。集成环境和很多历史遗留的数据库配置有同名数据库或密码不一致问题,你改配置文件的时候想当然填了一个密码,连不上就反复试。正确做法是先用面板的命令行工具确认账号密码真实可用,再填入配置文件,一步到位。

第四件,盲目使用高版本PHP。很多新手用的是最新版集成环境,默认PHP版本是8.x,装完DVWA发现某些模块不正常,就开始怀疑人生。遇到这种情况先检查PHP版本,别盲目折腾代码。DVWA和PHP 7.4是绝配,这一点我用得很稳。

第五件,把靶场部署到云服务器上。有人觉得自己电脑跑靶场太费电,非要把DVWA部署到一台VPS上。这非常不合适,一方面DVWA漏洞百出,部署到公网等于把一台有漏洞的机器暴露给全世界,很快就会被各种扫描器盯上,搞不好还会被用来攻击别人。另一方面,本地环回地址足够你完成所有练习了。靶场就在本地跑,绿色、合法、安全。

6.2 实战心得与后续练习建议

搭完DVWA之后,我建议你别急着把每个模块全点一遍,而是找一个方向深入下去。比如先用一个星期专门玩SQL Injection模块,从Low等级一路打到High等级,把报错注入、联合查询注入、布尔盲注、时间盲注都试一遍。一个模块玩精通,比所有模块都浅尝一遍要值钱得多。

工具层面的搭配,等你把DVWA的模块亲手玩过一轮之后,再去学Burp Suite的基本用法。DVWA里很多模块是专门为Burp Suite设计的,比如暴力破解、CSRF、文件上传,你要学会抓包、改包、重放这些操作。先有漏洞理解的底子,再上工具,你会觉得工具用起来非常顺手;反过来先学工具再学漏洞,容易变成只会点按钮的。

最后提醒一句,你在DVWA里练的一切技能,都只能用在你自己有授权的系统上。每次测试之前先确认边界,这是这一行最基本的职业操守。靶场给你的是一个安全的学习起点,但真正的安全能力,是在一次次合规且有边界的实战中慢慢磨出来的。

我个人在实际操作中的体会是,DVWA这个靶场,你搭好了它只是一个开始,真正有价值的是后面那段“亲手把一个漏洞从发现到利用到修复看明白”的过程。这个过程中你会遇到很多报错和困惑,那些其实都是最宝贵的成长节点。别怕踩坑,坑踩得多了,你对Web安全的理解就立体了。这篇教程你收藏好,动手的时候遇到问题随时回来查,祝你搭建顺利。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询