多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

网安新手必练四大靶场:DVWA、Pikachu、SQLi-Labs与Upload-Labs实战指南

网安新手必练四大靶场:DVWA、Pikachu、SQLi-Labs与Upload-Labs实战指南 如果你对“黑客技术”这四个字有点兴趣但又不清楚从哪里开始、怎么练才不算违法那这篇文章就是给你的。网安这个圈子最忌讳的事就是拿真实网站练手——哪怕只是扫描一下都可能踩到法律红线。真正正规的上手方式是用靶场一套专门用来练习漏洞挖掘与利用的本地或远程实验环境。我见过太多新人一上来就搜“黑客入门教程”结果不是被割韭菜就是差点把自己送进去。今天我把网安新人必练的四个靶场从头到尾讲清楚包括它们各自练什么、怎么搭建、怎么通关、踩坑了怎么排查希望能帮你把这条路走顺。这篇文章适合完全零基础的小白也适合已经学了一段时间但总觉得实战不够的同学。我不讲虚的直接给你一套能照着做的系统化训练方案。1. 先搞清楚靶场是什么为什么练手非它不可1.1 靶场与真实网站的本质区别很多新人刚接触网安时脑子里是这样的学黑客技术 找个网站试试能不能黑进去。这个想法必须立刻纠正。真实网站背后有真实用户、真实数据任何越权测试、注入尝试都可能造成不可挽回的损失而且这属于违法行为和“技术研究”没有半点关系。靶场的定位完全不同。它是一个专门设计出来“让你打”的环境里面所有的漏洞、数据库、账号密码都是预设好的假数据。你可以放心地扫描、注入、上传木马、提权哪怕把整个靶场打崩了重启一下就能恢复原样。这就好比学开车要去驾校场地而不是直接上高速——靶场就是网安领域的驾校练车场。还有一点很关键靶场通常是开源的、可本地部署的。这意味着你可以在完全不联网的虚拟机里运行它自己一台电脑就能独立完成从环境搭建、漏洞发现到攻击利用的全过程既安全又自由。1.2 四个必练靶场怎么选、先练谁市面上叫得出名字的靶场至少有几十个但对新手来说真正值得从头到尾刷完的核心就这四个DVWADamn Vulnerable Web Application最经典的Web安全入门靶场里面有SQL注入、XSS、文件上传、CSRF等几乎所有常见Web漏洞的练习模块难度分低、中、高、不可入Impossible四档对新人极其友好。Pikachu皮卡丘靶场国内开发者的心头好基于PHPMySQL覆盖Web漏洞、RCE、反序列化等综合题型。它最大的优点是自带过关提示和漏洞原理讲解通关过程就是一次系统的学习过程。SQLi-Labs专攻SQL注入的单点训练靶场一共几十关每一关的注入点位置、过滤方式都不同练完它你对SQL注入的理解会上一个台阶。Upload-Labs专练文件上传漏洞同样关卡制的设计从最简单的后缀绕过到复杂的条件竞争每一关都是和后端代码的对抗。如果你之前完全没接触过Web安全我建议的顺序是先刷DVWA的Easy档和Medium档再刷Pikachu然后专项突破SQLi-Labs和Upload-Labs。这样从“了解漏洞长什么样”到“知道漏洞怎么被利用”再到“能独立绕过常见防护”是一个循序渐进的上升路径。2. 核心靶场逐一拆解每个靶场到底在练什么2.1 DVWA最适合零基础入门的全能选手DVWA全称是Damn Vulnerable Web Application翻译过来就是“该死的脆弱Web应用”。名字很直白它就是一个故意造得漏洞百出的网站专门让你上手练习的。DVWA包含十多个漏洞模块比如Brute Force暴力破解登录表单没有防爆破机制可以用Burp Suite抓包后跑字典。SQL InjectionSQL注入经典的登录查询拼接漏洞从判断列数、报错到联合查询拿数据。XSS跨站脚本存储型、反射型、DOM型三种都有。File Upload文件上传直接传一个一句话木马上去用蚁剑或冰蝎连接。CSRF跨站请求伪造改密码、改邮箱等功能没有任何Token校验构造恶意页面就能诱导受害者执行操作。Command Injection命令注入在ping功能后面拼系统命令。DVWA还内置了“安全等级”设置同一个漏洞在Low、Medium、High三种等级下代码的防御方式完全不同。这个设计非常巧妙——你可以在同一个漏洞里同时看到“无防护”和“有防护”两种写法对理解漏洞成因特别有帮助。很多人在DVWA上会犯一个错误只通关Low等级就觉得完事了。实际上DVWA的灵魂在于Medium和High等级下的代码审计。当你打开源码看到Medium等级用了mysql_real_escape_string转义、High等级用了参数化查询你才算真正理解了为什么注入能成功、为什么加上某个函数就注不进去了。2.2 Pikachu中文环境下的综合练兵场Pikachu皮卡丘靶场在国内网安圈子里的地位非常高原因很实在第一它默认带中文界面对英文不好的同学极度友好第二它的关卡设置不只是单个漏洞点而是把Web漏洞按“场景”组织起来练起来更有代入感。Pikachu覆盖的漏洞类型包括但不限于基于布尔的SQL盲注、基于时间的盲注XSS反射型、存储型、DOM型CSRFGET型和POST型RCE远程命令执行、远程代码执行文件包含、文件下载、文件上传越权访问、目录遍历PHP反序列化、XXEXML外部实体注入SSRF服务端请求伪造等我最推荐的是它自带的“提示系统”每一关都有过关提示有些关卡甚至直接告诉你漏洞点在哪、利用手法是什么。这对新人是天大的好事——不会出现“看了题一脸懵”的情况跟着提示一步步走就能把知识串起来。Pikachu还有个亮点是“过关”机制漏洞利用成功后会弹出一个通关提示让你获得即时反馈感学习动力也会足很多。另外Pikachu还集成了“RCE”这类偏“高配”的漏洞这在DVWA里是没有单独模块的。如果你把DVWA玩完了觉得不过瘾Pikachu是你进阶的第一站。2.3 SQLi-Labs单点突破SQL注入的专项训练营SQLi-Labs是一个纯粹到极致的靶场——它只做一件事就是让你练SQL注入。但别小看这一点SQL注入在OWASP Top 10里常年占据高位是Web安全里最基础也最核心的漏洞类型。SQLi-Labs从第1关到第60多关每一关都精心设计了不同的注入场景第1-10关字符型、数字型、报错型注入等基础玩法第11-20关POST注入、Cookie注入等非常规注入点第21-30关各种过滤绕过比如大小写绕过、空格绕过、注释符绕过第31-40关堆叠注入、宽字节注入等高阶技巧第41关以后时间盲注、布尔盲注、order by注入、limit注入等这个靶场特别适合做“专项训练”。很多人在DVWA里学过SQL注入但一到真实环境就发现“注入点找不到”“单引号被过滤了”原因就是练得太少。SQLi-Labs的价值就在这里——它用几十种变体把一个漏洞的方方面面都练到位了。刷完SQLi-Labs你再看到任何SQL注入点脑子里会立刻冒出好几种绕过思路。建议配合Burp Suite或HackBar使用一边发包一边观察响应手动注入的过程能帮你把SQL语法和注入原理刻进DNA里。2.4 Upload-Labs文件上传漏洞的进阶必修课Upload-Labs是另一个“单个漏洞练到极致”的靶场专注于文件上传漏洞。文件上传漏洞的危害很大一旦攻击者能传一个WebShell上去基本就等于拿下了网站的代码执行权限。Upload-Labs把上传绕过按难度拆成了20多关前端JS校验绕过一句话就能搞定禁用JS或改包MIME类型绕过抓包改Content-Type黑名单绕过大小写、空格、点、::$DATA、双写后缀等花式技巧白名单绕过配合解析漏洞比如Apache的配置文件、IIS的解析特性等图片马制作把PHP代码藏到图片里再包含执行条件竞争利用上传与校验之间的时间差快速生成webshell刷这个靶场时我强烈建议每过一关后都看看后端的PHP校验代码。你会发现所谓“绕过”本质上就是在跟开发者的过滤逻辑捉迷藏——他堵住一条路你就换一条路。这种思路在真实渗透测试中极其重要。3. 从零搭建环境选型与实操全过程3.1 环境选择本地虚拟机还是在线平台搭建靶场之前先把环境方案定下来。主流的方案有三种本地集成环境phpStudy 源码最简单适合Windows用户。下载phpStudy启动Apache和MySQL把靶场源码丢进WWW目录浏览器一访问就完成搭建。Docker部署最优雅适合已经熟悉Docker的同学。拉取镜像、一键启动环境隔离干净删掉重建都很轻松。在线靶场平台不需要自己搭直接注册就能刷。适合临时体验但本地环境依然是主流因为你必须有自己可控的练手空间。如果你追求稳定和一致我推荐直接上Docker。不仅DVWA、Pikachu这些靶场有现成镜像像Vulhub这个漏洞环境仓库更是按CVE漏洞逐个封装好的配合Docker Compose可以秒级启动任意漏洞环境。3.2 Docker一键搭建DVWA和Pikachu以Docker方式搭建DVWA为例步骤非常简单# 拉取镜像 docker pull vulnerables/web-dvwa # 启动容器 docker run -d -p 8080:80 vulnerables/web-dvwa # 访问 # 浏览器打开 http://127.0.0.1:8080Pikachu也有现成的Docker镜像docker pull area39/pikachu docker run -d -p 8081:80 area39/pikachu启动后浏览器直接访问对应端口就能看到靶场界面。用Docker的最大好处是玩坏了不心疼一条命令就能重新拉一个环境。而且不同靶场之间互不干扰想开几个就开几个。3.3 phpStudy方式Windows小白也能搞定如果你不太熟悉命令行phpStudy是最友好的选择。整个过程大约10分钟下载并安装phpStudy选择PHP 5.6或7.x版本避免版本过新导致兼容问题。启动Apache和MySQL服务。去GitHub下载DVWA或Pikachu源码压缩包。解压到phpStudy安装目录下的WWW文件夹里。访问 http://127.0.0.1/dvwa 或 http://127.0.0.1/pikachu 即可。DVWA首次访问会引导你初始化需要点击“Create/Reset Database”按钮。如果数据库连接报错通常是配置文件里的数据库密码不对DVWA的配置文件在config/config.inc.php把db_password改成你phpStudy里MySQL的实际密码就行。Pikachu的初始化更简单直接访问首页点击“初始化”按钮它会自动创建数据库并导入数据。如果初始化失败检查MySQL是否启动、PHP版本是否兼容。3.4 进阶靶场Vulhub、Vulnhub与红日靶场这四个核心靶场刷完之后就可以考虑往高阶走。常见的进阶方向有三个Vulhub一个基于Docker Compose的漏洞环境集合覆盖了大量真实历史漏洞比如Apache、Nginx、Tomcat等组件的CVE漏洞。它的价值在于“贴近真实”——每个漏洞环境都是基于真实组件版本构建的。Vulnhub一个提供虚拟机镜像的靶场社区里面的镜像是一个个完整的虚拟主机通常需要下载虚拟机文件用VMware或VirtualBox导入然后通过真实的渗透测试流程发起攻击。红日靶场Vulnstack国内团队维护的域渗透靶场模拟了一个完整的内网环境包含多台主机、域控、Web服务器等。它的目标是练内网渗透和域渗透技术适合已经有一定渗透基础的人。这三个进阶靶场的共同特点是没有“通关提示”需要你自己去信息收集、探测、利用、提权。这种“黑盒”级实战体验才是从“靶场玩家”过渡到“实战型人才”的关键一步。4. 通关实战方法论从读题到写报告4.1 一个标准通关流程长什么样很多新人在刷靶场时喜欢东打一下西打一下过了就开心卡住了就迷茫。我建议你养成一个标准的通关流程每过一个靶场关卡都按这个节奏来读题与信息收集先访问页面弄清楚这个功能点是什么登录搜索上传ping查看URL参数、请求头、Cookie等信息。正常功能测试先按正常操作走一遍看看页面如何响应。比如登录功能先试着登录一个不存在的账号观察报错信息是否泄露了敏感内容。尝试攻击根据已学知识预测可能存在什么漏洞然后尝试对应的攻击手法。比如看到搜索框试一下输入看看有没有报错这往往是SQL注入的前兆。成功与验证如果攻击成功要验证影响。比如拿到数据库版本、读出admin密码哈希、弹出一个XSS对话框这比“感觉能注入”可靠得多。看源码理解成因这是最重要的一步。打开靶场自带的源码分析漏洞产生的代码逻辑搞清楚“为什么这里能绕过”“这个过滤函数为什么挡不住”。记录和总结把这个关卡的知识点、利用手法、绕过思路整理成一个结构化笔记或报告。日后回看这会是你最宝贵的资产。这套流程前期走一遍大概要一两个小时但练上十来个关卡后你会发现自己看漏洞的眼光完全不一样了。4.2 靶场启动失败的常见原因与排查实录搭建靶场的过程里最让人崩溃的就是“启动失败”。我整理了一份我实际踩过坑的排查手册按照优先级排查现象可能原因解决方法页面无法访问浏览器显示拒绝连接Apache/Nginx未启动或端口被占用启动服务检查端口占用改用8080、8081等端口网站能打开但报数据库连接错误MySQL未启动或数据库账号密码不对确认MySQL服务已启动修改配置文件中的db_password访问靶场时出现PHP警告或空白页PHP版本过新或缺少扩展在phpStudy中切换PHP版本为5.6或7.x开启php_mysqli扩展DVWA初始化失败数据库创建权限不足检查MySQL账号是否有CREATE权限或者手动导入网站目录下的SQL文件Docker容器启动后无法访问端口未映射或映射错误用docker ps查看端口映射情况重新运行-p参数Linux下部署时403 Forbidden目录权限不足给Web目录加权限chmod -R 755 目录路径这些坑几乎每个新手都会踩一遍但踩一次就学会了。我自己的经验是大部分启动失败问题出在“环境版本不匹配”。靶场源码是几年前写的用的是老版本PHP的特性你用PHP 8跑它确实容易出现兼容问题。所以最稳妥的配置是PHP 5.6 MySQL 5.7。4.3 Burp Suite怎么配合靶场练习刷靶场的过程中Burp Suite是使用频率最高的工具。从DVWA的Brute Force到Upload-Labs的改包上传都离不开它。新手需要熟练掌握的Burp操作至少包括代理抓包打开Burp的Proxy设置浏览器代理为127.0.0.1:8080就可以看到每次请求的原始数据。Repeater重放器抓到请求后发送到Repeater可以手动修改参数反复发送这是注入类题目的核心操作环境。Intruder暴力破解器设置Payload位置和字典用于爆破登录框或枚举ID。Decoder解码器URL编码、Base64、Hex等编码转换很多过滤绕过时要用到。Burp的社区版就足够刷靶场用了不需要一上来就追求满配工具链。等你对抓包、改包非常熟练之后再逐步扩展学习sqlmap、nuclei、蚁剑等工具工具的熟练度和对漏洞原理的理解是互相成就的。4.4 一个可复制的90天学习路线根据我自己带人的经验给网安新人规划一条90天的可行路线第1-30天基础夯实。先花两周学HTML、CSS、JavaScript、PHP基础语法至少能看懂前后端代码。再用DVWA把每个漏洞模块的低等级通关一遍配合Burp Suite熟悉抓包改包操作。顺带把HTTP协议的关键知识点补上请求方法、状态码、Header、Cookie机制。这一阶段你不需要理解太深先把“漏洞长什么样”建立感性认识。第31-60天专项突破。开始刷SQLi-Labs和Upload-Labs每个靶场每天过3-5关。刷的同时学会看PHP源码理解过滤逻辑和绕过思路。这时候可以开始接触XSS-Labs它和SQLi-Labs是同一个系列的专项靶场。同时把DVWA的中、高等级也补上配合源码审计理解防护手段。第61-90天综合实战。开始刷Pikachu从头到尾完整过一遍。重点是做知识串联同一个漏洞在DVWA里是什么样子在Pikachu里又变成了什么场景在真实业务里还可能出现在哪里。有余力的同学可以尝试搭建Vulhub环境下的一两个真实CVE漏洞环境感受一下“真实漏洞”和“教学漏洞”的区别。这条路线走完你已经具备了Web安全方向的基础渗透测试能力。下一步再根据兴趣选择方向是继续深入二进制安全、内网渗透还是转向代码审计、安全开发都有扎实的地基。5. 写在最后靶场之外心态和方法比工具更重要最后再分享几条我在实际学习中体会最深的东西。第一不要迷信工具。很多新人喜欢收藏各种扫描器、自动化工具好像工具越多越厉害。但实际上刷靶场的阶段手动操作远比自动化重要。自动化工具能帮你扫出漏洞但不会告诉你漏洞为什么存在、怎么修复、如何绕过硬防护。手动的过程虽然慢但每一次尝试都在深化你的理解。第二一定要养成写笔记的习惯。不要觉得“打过一遍就会了”技术细节忘得比想象中快得多。我在刷SQLi-Labs时每过一关都会记录注入类型、关键SQL语句、过滤方式、绕过思路这个笔记后来成了我复习和面试准备的重要资料。第三学会查官方文档和国外优质博客。靶场刷多了你会发现真正的瓶颈不是“不会用工具”而是“不知道漏洞背后的原理”。这个时候去读漏洞对应的官方修复建议、OWASP的防护指南往往比机械地刷关卡更有效。靶场只是一个起点但它是合法的、高效的、可持续积累的起点。只要你一步步来不急于求成这套系统化训练方案会带你稳稳走进网络安全这扇门。
返回列表