靶场这东西,圈内人基本都有共识:想在网络安全这行练出真本事,但又不想把自己练进局子里,就必须在合法环境里动手。很多新手一上来就想挖真网站的漏洞,这想法很危险,轻则被封IP,重则真的涉嫌破坏计算机信息系统。正确的路子是先搭建一套本地靶场,或者用开源的漏洞环境,把Web安全的核心攻击手法,比如SQL注入、XSS、文件上传绕过,一个个滚瓜烂熟,再考虑去SRC平台做合规的漏洞提交。
这篇内容,我就从自己当年踩坑的经历出发,把我认为最适合网安新人系统化训练的四个靶场一次性讲透:DVWA、SQLi-LAB、XSS-Labs和Upload-Labs。这套组合不是随便凑的,它覆盖了Web安全方向最常见的四大类漏洞,从综合环境到专项训练,一步步从入门到实战,把新手最容易卡壳的“不知道怎么下手”“不知道学完有什么用”的问题解决掉。不管你是完全零基础,还是已经会点网络基础但没动过手,这套方案都值得认真看。
1. 内容整体设计与思路拆解:为什么是这四个靶场
先说个基本判断:现在市面上的漏洞靶场很多,有开源的,有商业的,也有在线平台。但多不等于好,很多新手一开始就乱下载,今天装这个,明天玩那个,结果哪个都只玩了个首页,漏洞原理一问三不知。我这套方案的核心思路,就是“一个综合靶场打底,三个专项靶场逐点突破”。
1.1 四个靶场分别扮演什么角色
DVWA是综合型靶场,里面几乎涵盖了Web渗透测试最常见的漏洞类型,从SQL注入、XSS、CSRF到文件包含、文件上传、命令注入都有。它的最大价值是让你用“上帝视角”看整个Web安全版图。先通过DVWA把每种漏洞的基本原理、利用方式和防御思路过一遍,你就知道哪些方向是自己感兴趣的。
剩下三个靶场,全是专项的:
SQLi-LAB专门练SQL注入。它把SQL注入按场景拆成了几十关,从最基础的“单引号报错”到“时间盲注”“堆叠注入”“宽字节注入”,每一关都对应真实世界中一种注入利用场景。你把SQLi-LAB刷完,以后再遇到任何SQL注入点,脑子里的攻击路径会很清晰。
XSS-Labs是专门练跨站脚本攻击的靶场。它聚焦在反射型、存储型、DOM型XSS的利用和绕过上,关卡设计层层递进,后面几关还涉及各种过滤规则绕过,非常锻炼你对“输入输出过滤”的理解。
Upload-Labs是专门练文件上传漏洞的靶场。文件上传是Web渗透中拿服务器权限的高频入口,这里面的每一关都模拟了服务端不同的校验姿势,你能在本地合法地把“前端校验绕过”“Content-Type绕过”“黑名单绕过”“解析漏洞”这些手法全部撸一遍。
1.2 这个组合能解决什么问题
新手学Web安全,最大的两个困境是“没有方向”和“没有真实攻击目标”。没有方向,是因为知识体系太碎片化,今天看一个SQL注入的帖子,明天看一个XSS的短视频,感觉什么都会,一上手全忘。没有真实目标,是因为道德和法律的红线摆在那里,你不可能拿真实网站练手。
用这套组合就能同时破局。首先,DVWA给你的是全景,专项靶场给你的是深度,路线很清晰,就算你跟着目录一个个执行,也不会跑偏。其次,这些靶场全部是本地运行环境,你在自己的虚拟机里打它,就像在射击场打靶,完全合法。等你把靶场打得足够熟练,养成了“看见参数就想测、看到上传点就判断逻辑”的肌肉记忆,再去找SRC平台,那时候你才算有点底气。
注意:这里的“实战”指的是实战环境,不是让你真的搞破坏。无论你水平多高,没有书面授权去测试任何非自己所有的系统,都属于违法行为,这一点希望每个新人都刻在脑子里。
2. 核心靶场逐个拆解:DVWA与SQLi-LAB
这两个靶场,一个管“面”,一个管“线”,是整套训练方案的地基。本章我把它们的环境搭建、关卡特点和实操要点掰开讲。
2.1 DVWA训练要点
先安装。DVWA的搭建目前最省事的方式是直接在虚拟机里装一个Linux系统,然后通过Docker拉取镜像,或者下载源码放到Web目录下。我用的是经典小皮面板加手动部署,步骤不复杂:装好PHP和MySQL,把DVWA的源码解压到网站根目录,然后改一下config文件里的数据库连接信息,打开网页按提示初始化即可。新手如果不想折腾,直接用Docker一杯启动,也完全没问题。
初始化完成后,DVWA会有一个安全等级选择:Low、Medium、High、Impossible。我见过很多新手直接选Low,把里面所有漏洞挨个打一遍,然后觉得Web安全太简单了。这个想法很错误。Low等级存在的意义是让你理解漏洞的逻辑,而不是让你去炫耀技术。真正让你长本事的,是Medium和High等级,因为这两个等级模拟了真实站点常见的防御措施,比如参数过滤、校验token、类型转换。你必须在这些限制下想办法绕过,这才是渗透测试的真实体验。
我在刷DVWA时,一直强调“至少要跑两遍”。第一遍从Low开始,目的是看懂每一种漏洞的攻击流程:比如在SQL注入模块,输入单引号导致页面报错;在XSS模块,输入弹窗脚本成功执行。第二遍强行要求自己只做High等级,这时候你会被迫去查资料、思考如何构造闭合、如何绕过htmlspecialchars函数,收获和第一遍完全不一样。
除了SQL注入和XSS,DVWA里还有一个非常值得深挖的模块——文件上传。Low等级就是直接上传一句话木马,High等级则加了文件类型和内容校验。很多人在这里第一次体验到“拿到webshell”的快乐,但我要提醒一句:拿到webshell后,不要急着用菜刀或各类工具去连接,这是你的个人靶机,但也要注意在自己可控范围内使用,避免木马文件造成意外扩散。重点还是要回到漏洞原理本身,明白为什么校验能被绕过。
刷完DVWA,你应该能做到:看到后端代码,能判断它用了哪种防御方式,并且知道经典的绕过思路。如果这一步没做到,先不要急着去下一个靶场,基础不牢,后面很痛苦。
2.2 SQLi-LAB训练要点
SQLi-LAB是我个人非常喜欢的靶场,它把SQL注入的学习做成了“关卡制”,目前有几十关,每一关都像一个限时闯关游戏。它不像DVWA把环境弄得那么“大而全”,而是专注到极致。也正因如此,它特别适合用来集中攻克SQL注入。
部署方式跟DVWA有点像,我在本地用的是源码直接放入Web目录,然后创建对应数据库。由于SQLi-LAB本身的提示信息非常丰富,新手完全可以从第一关开始,先尝试用单引号和双引号判断注入点,再看页面报错信息,然后挨个尝试联合查询、报错注入、布尔盲注、时间盲注。
这里我分享一个非常关键的实操原则:不要只看图快,要自己动手写注入payload,而不是直接复制网上的SQL语句。例如第一关,你输入 id=1' 页面报错,输入 id=1' and '1'='1 页面正常,输入 id=1' and '1'='2 页面不正常,这叫什么?这叫逻辑判断注入。你必须亲手敲这些语句,才能感受到“字符被拼接”的原理。我见过太多人用sqlmap一把梭,导出一脱裤子就完事,结果问他为什么报错注入用updatexml,他答不上来。这对于做SRC挖洞是非常致命的,因为sqlmap能跑出来不代表你能在白盒情况下分析漏洞。
SQLi-LAB刷到中后段,难度会陡增。比如宽字节注入,它其实是针对GBK编码环境下的特殊绕过技巧,很多新手会卡关。这时候我的建议是:先看源码,搞懂数据库编码,再去搜一下宽字节注入的原理文章,最后自己构造payload。这个过程会比直接看通关答案慢,但你学到的是可迁移的思维方式,而不是死记某个payload。
另外,我强烈建议本地装一套Burp Suite或类似工具,用代理翻看每一次请求和响应,搞清楚你发的payload到了服务端变成了什么。因为很多时候,注入成功与否不在于你写了什么,而在于服务端怎么拼了它。你只有亲眼看到请求体里的原始数据,才能建立起“输入-处理-输出”的链路感知。
刷完SQLi-LAB,你应该达到这样的状态:给一个存在注入点的URL,你能手测出注入类型,能判断是数字型还是字符型,能选择最合理的注入方式去获取数据。虽然你还不一定能通俗解释所有盲注原理,但至少你有了完整的“注入实操记忆体”。
3. 进阶补强:XSS-Labs与Upload-Labs
有了前面两个靶场的基础,你的攻击视野就不再是“只会拿着工具扫”,而是有了一批真正理解底层原理的手艺。第三个和第四个靶场,就是把手艺打磨得更锋利。
3.1 XSS-Labs:从弹窗到窃取凭证的完整链路
XSS-Labs是专门为XSS设计的专项靶场,关卡数量比DVWA多得多,而且每一关都有不同的过滤和编码方式。它不像SQLi-LAB那样需要数据库交互,它更关注“输入点”和“输出点”的复杂对抗。我在学XSS时,最大的感触是很多人把它当玩笑,觉得弹个alert框而已,没什么威慑力。但其实XSS真正的威力,藏在它在真实攻击链条中的位置:通过XSS配合其他漏洞,可以实现会话劫持、钓鱼、甚至针对管理员的CSRF。
在XSS-Labs里,前一半关卡是帮助你掌握基础,包括:直接插入script标签、通过img的onerror事件、利用大小写绕过、用注释符绕过闭合等。刷到中间,你需要理解HTML实体编码、URL编码,以及如何在过滤了尖括号的情况下利用事件属性触发脚本。这时候有一个好习惯:准备一张白纸,画一个“输入-过滤-输出”的流程图,每做一关,就标注清楚服务端到底过滤了什么,用的是什么正则,最后输出到哪个位置。画完十几关,你会发现XSS的绕过逻辑本质就是“如何在保证代码语义不变的情况下,绕过输入限制”。
实操里,我建议安装一个浏览器的“黑客工具类插件”或使用Burp的Repeater来观察响应。因为很多XSS触发条件很微妙,比如你插入的payload,如果在某些情况下被插入到了标签的属性值里,那么你需要提前闭合一个引号,如果被插入到了JavaScript代码块里,又得考虑转义。这些都是肉眼追页面很难察觉的,用代理看响应源码就一目了然。
另外,XSS-Labs里也有存储型XSS的关卡,你可以实际体验到:你提交的恶意脚本被保存在数据库中,然后每次页面被访问时都会执行。理解了这个过程,再去看那些真实安全事件里的“存储型XSS打管理员”,就一点都不玄幻了。简单说,XSS-Labs值得你花一周时间慢慢刷,边刷边总结自己的绕过payload字典,这个字典以后就是你在实战中宝贵的弹药库。
3.2 Upload-Labs:文件上传绕过的层层对抗
文件上传漏洞是很多新手不太重视,但在真实渗透里非常好用的一大类问题。Upload-Labs同样按照关卡模式设计,每一关都是一种服务端校验组合。你一旦在所有关口中成功上传了可解析的脚本,往往就代表着获得了Webshell权限,而这恰恰是合法靶场中非常过瘾的部分。
Upload-Labs的关卡,从最简单的前端JS校验开始。这一关破解思路很简单,利用Burp拦截上传请求,重发并在返回结果前修改文件后缀,或者干脆把前端校验事件给禁掉。但别急着赶进度,因为后面马上会迎来真正考验:Content-Type校验、文件头校验、黑名单校验、白名单校验。每一关都要求你使用不同的绕过策略。
刷到中后期,你会接触到解析漏洞:比如Apache的.htaccess上传,Nginx的解析配置错误,或者IIS的畸形解析。这些漏洞在现代环境中不一定还普遍存在,但理解它们的原理,能让你在分析一个真实站点时更快地判断出它是否存在同类风险。很多SRC漏洞,实际上就是文件上传功能没有做好服务端校验,导致了后续的任意文件写入。
我在练习时,习惯为每个关卡专门建一个实验文件夹,然后记录下这个关卡的校验代码片段、我的绕过payload、最终上传成功的文件内容。这份记录比任何教程都有价值,因为它包含了我自己尝试时的完整路径。我也强烈建议你这样做,不要只看通关截图,要自己创建一个本地文件,反复尝试。
当然,这里必须再提醒一句安全问题:Upload-Labs靶场内获得的Webshell,只能在个人运行的靶机环境中使用,千万别扩散到公共网络,更不要拿去做任何未授权的操作。所有的实验网络应该和常用办公网络隔离,防止练习用的恶意文件污染到别的设备,这是我自己经常给线下带的学员强调的一点。
4. 实操过程与核心环节实现:一套可落地的刷靶场训练计划
靶场再全,如果学习毫无章法也不行。我见过太多人,下载了四五个靶场,然后三天打鱼两天晒网,最后只会在靶场首页点点菜单。针对这种情况,我给你一套我自用的训练计划,这套计划带过几个新人,效果都还不错。
4.1 环境搭建:虚拟机隔离是底线
动手之前,先把网络连通性这件事想清楚。我推荐的方案是装一个VMware或VirtualBox虚拟机,在虚拟机里安装一个Linux发行版,比如Ubuntu或Kali Linux,然后把靶场环境全部装在虚拟机内部,宿主机只做Web页面访问。这个做法的好处是,整套漏洞环境与宿主机完全隔离,就算你在靶场里执行了恶意代码或者上传了木马,最多也只是污染虚拟机,宿主机不会受影响。
另外,我建议在同一台虚拟机内安装好常用的工具链:浏览器开发者工具、Burp Suite、sqlmap(可暂时不装)、一个支持代码高亮的编辑器。工具够用即可,不要一开始就堆一大堆“黑客工具”,那样只会分散你的注意力。
4.2 四周渐进式训练计划
第一周:DVWA打底。目标是完成DVWA所有模块一遍,要求至少做到Low和High各一遍,并且为每种漏洞写不少于两百字的原理记录。这周不要追求“打到Impossible”,而是把每个漏洞的利用逻辑搞清楚。
第二周:专攻SQLi-LAB。目标是刷完前二十关,不可使用sqlmap自动跑,必须手动构造payload。每三关做一次小结,记录注入点类型、利用方式、获取的数据库信息例子。第二周结束,你应该能够手测出一个注入点并判断类型。
第三周:进入XSS-Labs。目标是刷完至少十五关,每关都要记录“过滤了什么、我怎么绕过的”。第三周末尾,复盘一下自己总结出的绕过字典,然后回到DVWA的XSS模块试一试能否在High等级下成功利用。
第四周:挑战Upload-Labs。目标是把Upload-Labs刷完整,并且写一篇关于文件上传绕过思路的个人总结。这时候如果你精力充裕,可以回头把DVWA里所有模块用更大胆的思路再测一遍,比如尝试组合漏洞利用。
四周之后,你不一定记得每一个payload,但你会拥有一套属于自己的笔记,上面全是亲历的“为什么”。这份笔记,比任何证书都更能证明你的实战水平。
4.3 从靶场到SRC:如何把训练成果转化成漏洞挖掘能力
很多新人刷完靶场,下一步就想直接去SRC平台挖洞,这个方向没问题,但中间还差一步:学会怎么把靶场经验迁移到真实环境。真实环境要比靶场复杂得多,它没有通关标签,也没有源码可看,而且你只能测试自己选定目标范围内且获得授权的功能点。
我个人的实战心得是,在刷靶场的时候就要刻意培养“信息收集”的习惯。比如做SQLi-LAB时,不要只盯着目标参数id,还可以去看看这个页面有没有其他参数;在做Upload-Labs时,可以去看看上传功能有没有附带文件名回显、路径泄露等问题。这些“额外发现”其实就是SRC漏洞挖掘中的“低危信息泄露”或“逻辑漏洞”雏形。
等到你准备去SRC平台,第一件事是仔细阅读平台规则,搞清楚哪些类型的漏洞是合法的,哪些资产范围是允许的。另外一定要选择清除边界:比如测试登录功能时,绝对不要触碰其他用户的真实数据,不要试图越权查看他人订单。你要做的是证明漏洞存在的合理验证,点到为止。请记住:SRC挖洞的核心是“证明危害”,而不是“利用危害”。深入利用,一旦越界,你将面对法律风险。
5. 常见问题与排查技巧实录
刷靶场的过程中,很多人会在环境搭建和漏洞利用上卡很久。这里我整理了几个我自己带新人时被问得最多的问题,还有对应的解决思路,希望对你有用。
| 常见问题 | 可能原因 | 解决方案 |
|---|---|---|
| 靶场页面打开报数据库连接错误 | 配置文件未修改,数据库密码不对 | 检查靶场源码中的配置文件,确认MySQL账号密码和库名 |
| SQLi-LAB前面关卡能通,后面突然全乱码 | 页面编码不是UTF-8,服务端用的GBK | 浏览器手动切换编码,或观察源码中字符集声明 |
| XSS payload被过滤,直接显示为文本 | 服务端使用了htmlspecialchars或类似过滤 | 分析过滤规则,尝试事件属性、编码、不带尖括号的payload |
| 上传一句话木马之后,访问却无法解析 | 上传目录没有执行权限,或确认了白名单后缀 | 查看上传目录是否有php解析权限,尝试配合解析漏洞 |
| Burp拦截不到本地靶场的请求 | 浏览器没有设置代理,或代理端口不对 | 配置浏览器代理指向Burp默认端口,并关闭系统代理干扰 |
5.1 别让“工具依赖”毁了你的基本功
我必须单独提一下sqlmap和各类自动化工具。它们是非常强大的工具,但新人在没有完全理解底层逻辑的情况下使用,就是给自己埋坑。举个例子,用sqlmap跑一个布尔盲注,它会产生大量请求,你需要看懂它为什么用条件真和条件假的响应来差别判断。如果你只会输入sqlmap -u "http://xxx/?id=1" --dbs然后看输出,你永远不会知道报错注入原理、堆叠注入原理。你只是在数据层面拿到了结果,但过程是黑盒。
我的经验是:第一轮刷靶场,完全禁用自动化工具,全部手搓。第二轮可以用自动化工具,但前提是你能解释它发出的每一个请求是什么意思。到了真实SRC测试时,工具结合手测,效率和安全度反而更高。这个顺序一定不要搞反。
5.2 靶场训练之外的法律边界与职业操守
最后这部分,我想认真说几句不那么“技术”的话。我在带人的时候,看到过一些学员刷完靶场跃跃欲试,转身就去测试某个网站,还在那儿发朋友圈炫耀。这种苗头必须立刻掐灭。学习黑客技术的目的是增强防护能力、挖掘漏洞帮助厂商修复,而不是炫耀攻击能力。无论你技术多么高超,未经授权对任何系统进行渗透测试都是违法,这点没有灰色地带。
我自己的习惯是,只要是对互联网上公网资产进行安全测试,哪怕这个资产是朋友公司的,我也要拿到对方明确的书面授权,并且限定测试时间和范围。这不仅是法律问题,也是职业道德。一个真正优秀的网络安全从业者,不是在圈内吹嘘自己打穿过多少站点,而是他发现了多少漏洞且合规地报告了多少漏洞。
合法的靶场,就是让你在安全线内磨炼技术的最佳场所。等你技术成熟后,可以参与一些正规的众测项目、SRC项目,与厂商形成合法授权关系,那时候你再发挥你的技术价值,才算真正走在了正道上。
刷完这四个靶场,我自己的体会是:技术水平倒是其次,最重要的其实是建立了一个清晰的安全思维框架——遇到功能就想到对应攻击面,看到输入点就想到注入与XSS,看到上传点就想到解析与绕过。这个框架会在你日后的学习、挖洞、防护工作中持续发挥威力。最后再分享一个小技巧:每个靶场刷完,不要急着删掉环境,留着它,过一个月再去挑战一次,看看自己有没有新的思路。同样的关卡,不同阶段的你,打出来的payload和体会是完全不一样的。这种对比,是进步最好的量尺。