我印象特别深,刚接触安全测试那阵,最迷茫的就是“不知道练什么”。教程里的漏洞原理都看得懂,可一关掉浏览器,脑子里又一片空白。后来一位老前辈跟我说,别急着去真系统上试手,先用VMware把几个靶场一个个打穿。这句话帮我省了好几个月的弯路。所谓的零成本实战,其实就是用VMware Workstation在本地虚拟出一些故意留了漏洞的应用和系统,然后放心大胆地去测、去试、去玩。DVWA、Pikachu、VulnHub这三个靶场,基本能覆盖从Web漏洞基础到完整渗透流程的一大半内容,而且全都跑在本地环境里,不需要买服务器,也不需要碰任何真实系统。这篇文章就是我的完整复盘,从为什么选这三个靶场,到具体怎么搭建、怎么练、踩过哪些坑,全部摊开来讲。不需要你有多深的基础,只要电脑支持虚拟化,跟着一步步来,就能拥有一套属于自己的零成本练手环境。
1. 搭建前先想清楚:三个靶场分别能练到什么
很多新手一听说搭靶场,第一反应就是赶紧下载安装包。但我觉得更重要的,是先把三个靶场的定位搞清楚。它们不是重复的仓库,而是三条互补的学习线:一个给你打基础、一个帮你补知识点、一个把知识串成真实链路。选对了,后面练习才有方向。
1.1 DVWA:Web漏洞教学的“教科书”
DVWA全称Damn Vulnerable Web Application,翻译过来就是“该死的有漏洞的Web应用”。它是个用PHP写的网页程序,里面故意塞满了SQL注入、XSS、CSRF、命令注入、文件上传、暴力破解等常见Web漏洞场景。为什么说它适合零基础?因为每个漏洞都配了源码查看功能,你不但能打,还能看它背后是什么代码导致了漏洞。
DVWA还有四个安全等级:low、medium、high、impossible。同一段注入代码,在low等级下可能一条引号就绕过去了,到了medium、high就得考虑空格绕过、大小写绕过,最后到了impossible,源码直接改成参数化查询,漏洞基本焊死。这种渐进式设计,非常适合理解“防御是怎么一步步升级的”。我第一次用DVWA练SQL注入的时候,对着low等级的后台源码看了半天,突然明白了为什么输入一个' or 1=1#就能把登录逻辑绕过去。这种“看代码 加 打漏洞”的循环,比单纯背诵payload要有效太多。
我建议所有人刚开始练习时先泡在DVWA里,把SQL注入、存储型XSS、反射型XSS、CSRF这四类练熟。这些是Web安全的地基,后面不管学什么框架都要用到。DVWA还自带关卡提示,页面会说明本关要突破什么,配合火狐浏览器的F12开发者工具、Burp Suite抓包,能把每一个HTTP请求从头到尾看清,这对理解漏洞本质极有帮助。
1.2 Pikachu:更接地气的综合练习场
Pikachu靶场最大的特点是中文,作者把漏洞按知识点做成了模块表,包括暴力破解、XSS、CSRF、SQL注入、RCE、文件包含、文件上传、越权、目录遍历、敏感信息泄露、PHP反序列化、安全防御等。每个模块都附了演示说明,不用满世界找文档。对中文学习者来说,这大大降低了入门门槛。
Pikachu另外一个价值是弥补了DVWA没覆盖的场景。比如越权漏洞,DVWA里没有,Pikachu里干脆做了两个不同权限的用户,方便你直观体验水平越权和垂直越权。又比如SSRF、PHP反序列化这些相对进阶的漏洞,DVWA没有,Pikachu都有。所以我的定位是:DVWA是启蒙课本,Pikachu是查缺补漏的练习册。它的页面风格比较“复古”,有些模块在老版本PHP下跑得更顺,后面我会专门说怎么解决PHP版本带来的兼容问题。
1.3 VulnHub:最接近真实的“打靶”体验
VulnHub不是网页漏洞练习场,而是一个发布靶机镜像的平台。上面每个镜像都是一台完整的虚拟机操作系统,系统里故意开放了服务、留下了配置错误和漏洞。你需要像真实渗透测试那样:先扫描、再侦察、再找漏洞利用、再提权,最后拿到flag。如果说DVWA和Pikachu是“戴着游泳圈在池子里学换气”,VulnHub就是“跳进深水区自己扑腾”。
VulnHub上的入门靶机我推荐从Kioptrix系列开始,不要一上来就挑hard难度,容易劝退。这类靶机跑在VMware里,和真实的Linux服务器环境几乎一致,练的是完整攻击链,而不只是某个漏洞点。再强调一次边界:练习时所有操作都只发生在你本地VMware的虚拟网络里,目标也是你自己导入的靶机,完全在授权范围内。安全测试的底线就是授权,这个原则从第一天学就得记住,千万别把那套扫描和爆破手段搬到别人的IP上。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 为什么是VMware?环境准备与网络模式选择
虚拟机平台选择其实很多,VirtualBox免费,Windows自带的Hyper-V也免费用。但我个人还是推荐VMware Workstation Pro作为入门首选。它不见得是所有场景的最优解,但对新手绝对是最稳的选择。
2.1 VMware Workstation 对新手的友好程度
第一个原因是操作界面足够直观。创建虚拟机、导入镜像、配置快照都有图形化按钮,不需要折腾太多命令行。第二个原因是社区教程最多,你遇到“VMware虚拟机安装教程”“VMware导入OVA”之类的问题,一搜基本都有答案,学习成本低。第三个原因是它支持直接打开VulnHub下载的OVA文件,这在VirtualBox里偶尔会出现兼容问题。至于下载,直接去VMware官网拿安装包即可,先用试用版,或者按官方许可政策评估个人学习版本。千万别去搜那些来路不明的“激活工具”或者“许可证密钥生成器”,一是容易踩到恶意软件,二是学习阶段真没必要冒这个险。
2.2 硬件和系统检查,省得做到一半翻车
在动手之前,先确认三件事。第一,CPU虚拟化要在BIOS里打开。Intel平台叫VT-x,AMD平台叫SVM。打开任务管理器,切到“性能”页,如果“虚拟化”那栏显示“已启用”,就说明没问题;如果显示“已禁用”,需要重启进BIOS开启,不同主板按键不一样,常见的是Delete或F2。第二,内存建议至少8GB,16GB会更舒服。DVWA和Pikachu跑在物理机本地环境,内存开销不大,但如果你打算再灌一台Kali Linux攻击机,同时开好几台虚拟机,内存低于16GB会非常吃力。第三,磁盘预留要够。一个VulnHub靶机镜像大多在几百MB到2GB之间,但解压导入后会占好几GB,加上快照和日志,最好给VMware的工作目录留出至少60GB空间。
2.3 网络模式选择:NAT、桥接还是仅主机
刚接触VMware的人往往被网络模型搞晕,我用人话解释一下。NAT模式:虚拟机和物理主机组成一个私有网段,虚拟机通过主机转发去访问外网,外部设备无法直接访问虚拟机,但主机访问虚拟机没问题。这个模式适合靶场,既能访问外网拉软件,又把整个环境隔离在内部。桥接模式:虚拟机直接接入物理局域网,路由器会给它分配一个和主机同网络的IP,局域网内其他设备都能访问它。听着方便,但风险很大——如果单位或者公共WiFi网络有监控,虚拟机也一并暴露,新手容易出问题。仅主机模式:完全隔离,只能和物理主机互相通信,VM之间可以互相访问,但访问不了外网。
我建议练习Web靶场时统一用NAT,VulnHub靶机也先用NAT试。IP不通再考虑仅主机模式,因为有些靶机为了让练习者多学一点网络排查,会故意禁用DHCP或者修改网卡配置。我见过有人图省事切桥接,结果把自己的靶机IP暴露在局域网里,最后被网管找上门,完全没必要冒险。记住一个原则:本地靶场是关起门来的游戏,网络隔离越严格越安全。
3. 零基础也能跟着做的靶场搭建全流程
这一部分我按“从易到难”的顺序写,先讲DVWA和Pikachu,再讲VulnHub,最后补充Kali攻击机和网络连通性验证。每一步都是我自己走过无数遍的流程,照着做基本能一次跑通。
3.1 准备基础Web环境:PHPStudy或XAMPP
DVWA和Pikachu都是典型的PHP应用,所以得先有一套能跑PHP加MySQL的Web环境。新手最省事的方法是装集成环境:Windows推荐PHPStudy,它自带Apache、PHP、MySQL,一键启动,界面和中文文档都比较友好;XAMPP也完全可以,默认Web根目录是htdocs。安装完成后,把Apache和MySQL服务启动起来,能在浏览器访问到默认页面就算成功。注意记一下Web根目录的位置,后面解压源码都放到这个目录里。PHP版本这块特别重要:DVWA推荐PHP 7.x,Pikachu用PHP 5.6或7.0跑最合适。新版PHPStudy默认PHP版本往往偏高,需要手动切到7.x,不然之后会踩到一连串函数被删除的坑。
3.2 DVWA 部署步骤:下载源码、改配置、初始化数据库
第一步,去DVWA官方仓库下载源码包,解压后把整个文件夹重命名为dvwa,放到Web根目录下。第二步,进入dvwa/config目录,把config.inc.php.dist复制一份,重命名为config.inc.php,用编辑器打开,重点修改数据库配置。db_server保持localhost,db_database填dvwa,db_user填root,db_password按你本机MySQL的实际密码填。如果你用XAMPP默认配置,root用户没有密码,就留空;如果你在PHPStudy里自己设了MySQL密码,这里必须同步修改,否则后面必然报数据库连接错误。
第三步,浏览器访问http://127.0.0.1/dvwa/setup.php,页面会检查环境依赖,看到全是绿色对勾后,点击下方的Create / Reset Database按钮,等几秒就会自动建库建表。第四步,用默认账号admin、密码password登录。登录后左侧菜单有DVWA Security,点进去把安全等级设为low,就能开始第一轮练习了。需要注意一个细节:如果setup页面报错说PHP扩展缺失,回到PHPStudy或XAMPP里把php_curl、php_gd、php_mysqli这些扩展打开,然后重启Apache。很多人卡在这一步不是代码问题,是扩展没开,或者缓存没刷新。改完配置一定要彻底重启服务,别直接刷新页面就以为生效了。
3.3 Pikachu 部署步骤:中文靶场比想象中简单
Pikachu的搭建方式和DVWA很像,但更省事。去GitHub搜索pikachu靶场的官方仓库,下载源码压缩包,解压后放到Web根目录,目录名建议就叫pikachu。然后进入inc目录,打开config.inc.php,改三处:数据库地址、用户名和密码。一般默认配置已经写好localhost和root,你只需要把密码改成自己本机MySQL的实际密码,没设密码就留空。改完访问http://127.0.0.1/pikachu/,首页会出现初始化数据库的提示,点一下,它会自动创建pikachu数据库并导入数据。完成之后,你就能看到一长串漏洞模块列表,暴力破解、XSS、CSRF、SQL注入、RCE、文件包含、文件上传、越权、目录遍历、敏感信息泄露、PHP反序列化、安全防御,全都在页面上排好。
Pikachu每个模块右上角都有一条说明,有些还带“提示”按钮,这个设计很良心。我第一次练越权漏洞时,就是按页面提示创建了两个不同权限的账号,然后拿低权限账号去访问高权限接口,一下子就理解了水平越权和垂直越权的区别。如果你打开某个模块发现页面是空白或者报函数不存在,大概率是PHP版本问题,切到7.0或5.6再试。没有别的技巧,就是版本匹配。
3.4 VulnHub 靶机导入步骤:OVA文件直接打开
VulnHub的靶机大多以OVA格式打包,OVA在VMware里可以直接打开,不用手动创建新虚拟机。步骤:打开VMware Workstation,点“文件”→“打开”,选中下载的.ova文件,选择虚拟机存放路径,点导入。导入完成后,在虚拟机设置里把内存调到1GB到2GB,硬盘不用动,网络适配器选NAT模式。然后启动虚拟机,就像启动一台普通Linux服务器一样。它会跑一堆服务,屏幕上可能只显示一个登录提示,不用管它,因为我们的目的不是登录,而是去攻击它。
要提醒的是,VulnHub很多靶机为了提升难度,不会直接告诉你IP地址,甚至有些禁用DHCP。这时候需要靠扫描工具去发现它,具体方法我在后面讲。还有一点,OVA导入有时候会在VMware版本较老时失败,提示版本不兼容,解决办法就是升级VMware Workstation到较新版本,或者去下载VulnHub提供的OVF版本。
3.5 可选:装一台Kali Linux攻击机当练习工具
DVWA和Pikachu部署在物理机本地,用浏览器直接访问就可以打。但VulnHub这类完整靶机,最好配一台专门做扫描和利用的攻击机。攻击机首选Kali Linux,它内置了nmap、sqlmap、Burp Suite、dirb、gobuster等一堆安全测试工具,省去一个个手动安装环境的时间。Kali的虚拟机镜像可以在官网下载,解压后直接用VMware打开.vmx文件,启动后登录,把网络模式调成和靶机一样的NAT,就能开始练。需要注意的是,Kali相对吃资源,如果电脑内存只有8GB,同时开一台Kali和一台VulnHub靶机会有点卡,建议先把不用的虚拟机关掉,给它们留足内存。
3.6 验证网络连通性:三台机器能不能互相访问
搭建完别急着开打,先做一次连通性检查,这一步能省下后面大把排查时间。如果DVWA和Pikachu部署在物理机本地,攻击机用浏览器直接访问宿主机IP和端口就行。如果是VulnHub靶机,打开Kali终端,用下面命令扫描当前VMware NAT网段,找出靶机IP:
bash复制nmap -sP 192.168.100.0/24
具体网段以VMware“编辑→虚拟网络编辑器”里VMnet8显示为准,可能不是192.168.100.0,要根据实际情况改。扫描时如果发现有陌生设备在线,大概率就是靶机。所有机器能互相ping通,说明网络环境已经就绪,接下来才是真正的安全测试练习。
4. 三个靶场的组合玩法与练习路线
环境搭好了,但很多人会进入另一个误区:东一榔头西一棒槌,今天试试这个明天摸摸那个,最后哪个都没学透。我根据自己的实操经验,把三个靶场串成一条递进式的练习路线,你可以直接照着排计划。
4.1 DVWA:从low到impossible,一次吃掉一个漏洞
我见过不少新手一上来就疯狂刷漏洞模块,把所有等级全部跳过,只挑low等级打一遍就觉得完事。这种做法效果很差。正确的做法是同一个漏洞从low打到impossible,一次只啃一个点。拿SQL注入举例:先在low等级下用单引号触发报错,再用union select爆字段,然后切到源码页看后台是怎么拼接SQL的;接着切到medium,你会发现输入被过滤了空格或引号,这时候得想怎么绕过;到high,过滤规则更复杂;最后到impossible,源码直接改成了参数化查询,注入彻底无效。这个过程下来,你收获的不只是几个payload,而是对防护升级路径的完整理解。
我给零基础朋友的建议是每周设一个小目标:第一周只练SQL注入,第二周练XSS,第三周练CSRF和命令注入。每打完一个等级,就把自己的payload和思路记录下来,做成自己的笔记库。很多新手都会忽略笔记,但几个月后你会哭着感谢那些记录,因为同样的漏洞你会反复碰到。
4.2 Pikachu:按模块补短板,新增知识全覆盖
等DVWA里的基础漏洞玩熟了,就可以切到Pikachu做知识扩展。Pikachu的模块列表很长,不用全部一天内刷完,按两条线走效率最高。一条是“基础漏洞补齐线”:DVWA没覆盖到的文件包含、目录遍历、SSRF、PHP反序列化,都从Pikachu对应模块补上。另一条是“业务逻辑练习线”:重点练越权访问,因为真实应用里面越权问题太常见了。Pikachu的越权模块提供了两个账号,你可以在普通用户登录状态下直接修改URL参数去访问管理员接口,体验一次水平越权和垂直越权,这种场景在纯教学靶场里很难找到这么直观的。
Pikachu里还有个基于验证码的暴力破解场景,也和DVWA里纯表单爆破不同,能练习一些绕过思路。它每个模块页面上自带说明和提示,打之前先读一遍,比自己瞎试效率高太多。我尤其推荐把“RCE”和“文件上传”这两个模块多练几遍,因为它们在真实测试里是拿权限的关键路径。
4.3 VulnHub:用一次完整打靶把前面学的串起来
当DVWA和Pikachu的Web漏洞都熟练到一定程度后,就可以去VulnHub挑战完整打靶流程了。第一台靶机强烈建议选简单一点的,比如Kioptrix Level 1,它虽然老,但非常经典,网上walkthrough也多,方便你对照复盘。标准打法大概是:先用nmap扫全端口,发现开放了80和443;访问Web页面,识别出系统用的老旧版本;再对Web目录做扫描,发现后台登录点,尝试弱口令;拿到一个低权限Shell之后,再去查系统信息、看sudo权限,最后提权到root,读取flag。
这个过程里,你会用到Web漏洞利用、系统命令、信息收集、提权技巧等一堆知识。整个过程就是一次“综合考试”。打完一定要复盘:哪个环节卡住了?是信息收集不够细,还是利用链理解不到位?我个人的经验是,写复盘笔记比打靶本身还重要。漏洞知识会忘,但方法论和排查思路不会,那是真正沉淀下来的能力。等第一台打完了,再逐步增加难度,慢慢你就可以挑战VulnHub上那些hard级别的靶机了。
5. 踩坑实录:搭建和使用中的高频问题排查
这部分我总结了从零搭靶场以来碰到的高频问题,基本覆盖了“靶场启动失败”“页面白屏”“网络不通”这类能让新手抓狂的情况。很多坑我都是自己踩过才明白,这里直接写出来,帮你省点时间。
5.1 靶机启动后找不到IP
这是VulnHub玩家最常见的坑。靶机开机后,屏幕可能只显示一个登录提示,完全不给IP地址。别慌,先保证网络模式是NAT,然后在Kali里用nmap -sP 192.168.100.0/24扫描整个网段,注意网段要对,查一下VMware虚拟网络编辑器里VMnet8的实际配置。如果扫不出来,可能是Windows防火墙拦截了VMware的DHCP服务,临时关闭VMnet8相关防火墙再试。还有一种情况是老靶机默认走桥接拿IP,但桥接模式下IP分配不稳定,可以直接改成“仅主机”模式,然后重新扫描新网段。实在找不到,就重启靶机,在启动日志里多留意打印出来的网络配置信息。
5.2 页面报数据库错误,或者直接白屏
九成是配置文件的问题。DVWA和Pikachu都把数据库配置写在PHP文件里,如果你改了MySQL密码却忘了同步修改配置文件,页面就会报连接失败。解决办法很简单:回到配置文件,把db_password改成真实密码,重启Apache。还有一类问题是PHP版本不兼容,老靶场在PHP 8.x环境里经常出现函数被移除或者mysqli扩展未启用的情况。Pikachu用PHP 5.6或7.0最稳,DVWA推荐PHP 7.x。如果页面白屏,建议把PHP的display_errors打开,让具体报错显示出来,再根据错误提示去改扩展或版本,比瞎猜快得多。
5.3 VMware报不兼容、启动直接蓝屏
Windows上玩VMware,最容易碰到的问题是Hyper-V冲突。如果你在控制面板里启用了Hyper-V,或者使用了Windows Sandbox、WSL2这些依赖虚拟化的功能,VMware Workstation启动时大概率会提示“VMware Workstation与Device/Credential Guard不兼容”,然后无法继续。解决办法是打开“控制面板→程序→启用或关闭Windows功能”,把Hyper-V的勾选取消,然后在管理员命令行执行这条命令:
bash复制bcdedit /set hypervisorlaunchtype off
执行完后重启电脑。如果你重度依赖WSL2,关掉Hyper-V会影响它,那就要自己在两种方案之间做个取舍。我的个人方案是主要用VMware做靶场,WSL2只在确实需要时才临时打开,平时保持关闭状态,这样两边都不会太影响。
5.4 磁盘空间被快照吃光
VMware的快照是非常好用的“后悔药”,靶场被打烂了,恢复快照就能回到初始状态。但快照不能乱留。快照会随着虚拟机的持续运行不断膨胀,尤其是你还在里面跑扫描、装工具,很容易把几个GB的基础磁盘撑爆。我见过有人一口气留了七八个快照,硬盘直接报警。建议的做法是:每打完一个阶段留一个快照,并且及时删除不需要的旧快照;如果想彻底释放空间,最好关闭虚拟机电源后再执行磁盘压缩。清理磁盘前记得备份重要数据和快照,别手滑把整个虚拟机目录删掉。
5.5 常见问题速查表
| 问题现象 | 常见原因 | 处理办法 |
|---|---|---|
| 靶机启动后找不到IP | 网络模式不对、DHCP未生效 | 检查VMnet8网段,用nmap或arp-scan扫描 |
| Web页面提示数据库连接失败 | 配置文件与MySQL实际密码不一致 | 修改配置文件,重启Apache |
| DVWA初始化页面报PHP扩展缺失 | php_curl、php_gd、php_mysqli未开启 | 在PHPStudy或XAMPP里开启扩展,重启服务 |
| 页面白屏或500错误 | PHP版本太新,函数被移除 | 切换PHP 5.6或7.x,打开display_errors定位 |
| VMware启动报不兼容提示 | Windows Hyper-V或内核隔离开启 | 关闭Hyper-V功能,或执行bcdedit关闭hypervisorlaunchtype |
| 打靶时卡顿严重 | 内存不足、磁盘空间不足 | 减少同时运行的虚拟机,清理快照和压缩磁盘 |
| 初始化数据库一直转圈 | MySQL未启动或端口被占用 | 确认MySQL服务状态,检查3306端口占用情况 |
最后说点个人体会。我刚开始玩靶场那会儿,最大的毛病是眼高手低,看别人写的通关wp觉得好简单,自己一上手就卡住。后来我强迫自己每个步骤都截图记录,打完一个靶机就写复盘,把卡住的地方标红,隔一周再回头打一遍,效果立竿见影。练安全这件事没有捷径,但完全可以把路铺得更顺一些——VMware加三个靶场,就是你最便宜的“训练场”。如果你也打算入门,别急着买服务器,也别急着找真实目标,先把这套环境搭好,沉下心把一个漏洞打透再打下一个。等你能独立拿下一台VulnHub入门靶机,再回头看当初连SQL注入都云里雾里的自己,你会觉得这条路走得很值。
