资讯动态

零基础到第一个漏洞:完整学习路线与实战复盘

发布时间:2026/10/20 7:13:03 来源:尧图企业网站定制
这年头搞网络安全的人越来越多但真正能从零开始、亲手挖到第一个漏洞的人其实没那么多。我当初也是从完全不懂的小白起步走了不少弯路最后才在一家公司的测试系统里拿下第一个漏洞。今天这篇就把我整个从0到1的过程、用过的资源、踩过的坑全部倒出来希望对正在入门或者卡在瓶颈期的朋友有点帮助。1. 学习路线与心态建设先想清楚再动手很多新人上来就急着装工具、跑扫描器结果扫了一堆没啥用的东西反而挫败感很强。我个人的经验是漏洞挖掘不是靠工具堆出来的而是靠“思路 经验 细心”拼出来的工具只是放大你能力的杠杆。1.1 零基础到底该学什么不该学什么我在最开始的阶段也乱学过一阵子今天看这个教程明天看那个课程结果脑子一片浆糊。后来我总结出一条比较高效的路径分三个阶段走第一阶段网络基础 协议理解这一步很多人会跳过但我觉得恰恰是最重要的。你得先知道数据包是怎么发的、HTTP请求长什么样、Cookie和Session是干嘛的、TCP三次握手是什么后面做任何测试心里才有底。我当时花了两周时间专门看网络相关的视频把OSI七层模型、HTTP协议、DNS解析流程这些基础啃了一遍。一开始觉得很枯燥但后来发现不管是挖漏洞还是看漏洞报告这些底层知识全都是地基。第二阶段Web安全原理逐个击破Web漏洞是新手入门最容易出成果的方向因为大部分系统都有Web入口而且漏洞原理相对成熟、资料多。OWASP Top 10是必看的SQL注入、XSS、CSRF、SSRF、文件上传、命令执行这几个大类每个都要搞明白是什么、怎么产生、怎么利用、怎么修复。我看视频的时候不会光看每个漏洞都会去靶场亲手打一遍因为看得懂和打得进去完全是两码事。第三阶段实操靶场把理论变成肌肉记忆国内外的在线靶场我都用过比如某开源漏洞平台自带的靶场环境、某知名的Web安全训练靶场还有自己用虚拟机搭的本地实验环境。这个阶段不要贪多每个漏洞类型至少练3到5遍直到你看到某个参数就能条件反射地想到可能的漏洞类型。1.2 新人最容易踩的三个心态坑坑一追求工具数量而不是精度。我曾经一口气装了十几个扫描器天天看扫描报告实际上大部分报告都是误报把自己搞得特别焦虑。后来我改成每个阶段只用一两个核心工具把它们的每种参数都摸透效果反而好了很多。坑二急于求成想一口吃成胖子。有人看了一些漏洞报告就觉得“这也不难嘛”结果自己去测的时候连目标的数据包都看不懂。这很正常因为漏洞报告是别人把最关键的利用路径已经走通了你再去看当然觉得简单。正确做法是从攻击面的角度出发自己去走一遍完整的信息收集和测试流程。坑三只看不练收藏夹吃灰。我的视频教程和学习笔记加起来有几个G但真正让我进步的不是收藏的数量而是每一节我都跟着动手做。收藏100个教程不如把一个教程练10遍这话是真的。2. 核心技能拆解漏洞挖不到的真正原因很多人挖不到漏洞不是因为不懂漏洞原理而是不知道漏洞藏在哪。这一节我就把整个漏洞挖掘过程中最核心的几个技能环节拆开来讲。2.1 信息收集决定了你能看到多大的攻击面信息收集是漏洞挖掘的第一步也是决定上限的一步。你收集到的域名、IP、端口、目录、参数越多能测试的入口就越多。我最早挖洞的时候信息收集做得非常粗糙就是拿到一个域名直接开扫结果扫了半天也没发现什么。后来我才意识到信息收集要有层次感。我比较常用的信息收集流程是这样的子域名枚举通过证书透明度日志、DNS字典爆破等方式收集目标的主域名、子域名、甚至一些老旧的测试域名。很多公司会遗留一些已经不维护的二级域名上面跑着老旧系统攻击面一下子就能打开。IP与端口发现找到域名解析到的真实IP判断是否有CDN防护如果有再看看能否通过历史DNS记录、邮件头信息等方式找到源站IP。端口扫描只扫常见高危端口不是把所有端口都扫一遍浪费时间。目录与文件探测针对Web应用用目录扫描工具去探测后台路径、敏感文件、备份文件、配置文件等。比如我曾经就遇到过某个系统根目录下留着一个带版本号的备份压缩包点开之后直接拿到了源码后面的测试就变成了代码审计级别的玩法。指纹识别识别Web服务器类型、中间件版本、开发框架。指纹识别能让你快速定位到目标可能存在的已知漏洞版本比如某些老版本的框架有一堆公开漏洞可以直接打。信息收集要记笔记。我会用专门的笔记软件建一个目标专用的页面把域名、IP、端口、指纹、目录结果、截图全部整理在一起后面测试的时候随时翻效率提升非常明显。2.2 漏洞原理要理解到“能自己写POC”的程度漏洞原理最忌讳“大概知道”。比如SQL注入很多人知道在参数后面加个单引号看报错但不知道怎么判断报错是数据库返回的还是应用层拦截的更不知道联合查询的字段数怎么判断。我对自己的要求是每个漏洞类型都要能不看资料写出一个最简单的检测脚本。以SQL注入为例我当时给自己定了几个小目标能解释注入产生的原因拼接了用户输入到SQL语句里能说出常见注入类型联合查询、布尔盲注、时间盲注、报错注入的区分方法能手写一个Python脚本对目标URL做布尔盲注的检测能把一个带注入点的Payload压缩到最短规避简单的过滤。当你达到这个程度的时候你看到一个URL的传参方式心里基本就有预判了。这个阶段会比较痛苦因为要把原理揉碎了、用代码去表达漏洞逻辑但一旦突破了后面看很多漏洞报告就是降维打击。2.3 一个思路从功能点反推漏洞可能在哪里观察目标系统的功能点也很重要。漏洞不会凭空出现在页面上它藏在业务逻辑里。我习惯拿到一个系统先注册一个账号把每个功能都用一遍然后想一个问题“开发这里是怎么写代码实现的”搜索功能后端会不会拼接SQL会不会把搜索词输出在页面上导致XSS文件上传功能校验了后缀名吗校验了文件头吗解析漏洞能不能用找回密码的逻辑里验证码能不能爆破重置链接有没有绑定用户个人资料页面的头像地址能不能改成任意URL让别人访问你资料的时候发出任意请求SSRF这种“功能点反推”的方法比漫无目的地扫描高效得多也更容易找到逻辑漏洞。我挖到的第一个漏洞就是用这个思路在个人资料修改功能里发现的存储型XSS。3. 实操过程从信息收集到第一个漏洞的完整复盘这一节我完整复盘我是怎么从拿到一个测试目标到最终确认漏洞的整个过程比较典型也比较基础非常适合复现。3.1 目标与授权说明我测试的是一个模拟项目X来自某教育和实验平台提供的授权靶标它明确标注为可测试目标。我强烈建议新手在实战之前一定要先确认授权任何未经授权的测试都是违法行为操作之前先确认自己有没有权限。我的整个流程是在授权的靶标环境下进行的这里也提醒各位读者技术是把双刃剑一定要用在正途上。3.2 第一步信息收集与攻击面梳理拿到目标之后我并没有第一时间开扫而是先用浏览器打开目标网站看了看它是什么类型的系统、有哪些功能模块。这是一个站内应用有一个公告栏、一个个人中心、一个文件下载功能。我先做了基础的信息收集拿到了以下几个方面主域名解析到一个固定IP端口扫描显示只开放了80HTTP和443HTTPS说明运维做了端口收敛没有多余的暴露面子域名枚举发现了一个类似 “旧版演示环境” 的子域解析到另一个IP开放了8080端口上面跑着一个看起来像是管理后台的页面通过指纹识别主站用的是某国产框架的旧版本旧版演示环境用的是另一套老旧的开发框架两个版本都有公开漏洞记录。信息收集到这里攻击面已经从一个主站扩展到两个站点。如果没有做子域名枚举我可能就错过那个旧版演示环境了这也是我做测试的时候每次都会把信息收集做扎实的原因。3.3 第二步逐个功能点测试不放过任何输入框我的习惯是先从登录前可访问的页面开始测因为这类页面往往不鉴权如果出现问题影响面更大。第一步看的是公告栏。公告栏只能浏览没有搜索功能也没有提交入口。我用目录扫描工具对这个路径做了简单的目录探测但没有发现什么有价值的东西。然后我登录了一个普通测试账号进入个人中心。个人中心的“修改昵称”和“个人简介”两个输入框引起了我的注意因为这两个字段最终会被展示在用户的个人主页上是明显的XSS测试点。我先在昵称里输入了一段测试脚本保存后访问我的个人主页发现脚本被原样输出但没有执行。我又试了几种常见的绕过方式比如修改事件属性、用编码变换等形式尝试绕过过滤但都没有成功。这说明后端对危险字符做了基础的过滤。3.4 第三步换个思路在文件下载功能里突破主站的XSS没有成功我没有纠结转头去看文件下载功能。下载功能的URL格式大概是这样的/download?filexxx.pdf。看到这个传参方式我第一反应就是这个参数会不会存在路径穿越或者文件读取我先试了把参数从xxx.pdf改成正常的另一个文件名能正常下载说明参数是直接拼进文件路径里的。接着我尝试用../进行路径穿越比如把参数改成../../../etc/passwd结果服务器直接返回了文件内容那一刻真的很激动因为这意味着我可以读取服务器上的任意文件了。我接着尝试了几个敏感路径/etc/passwd读取成功、/app/config.php也读取成功。配置文件里没有数据库密码但有一个绝对路径和一个日志路径。更关键的是这个漏洞还让我看到了应用的部分源码结构。一个任意文件读取漏洞直接升级成了信息泄漏和源码审计的入口。3.5 第四步确认漏洞并写报告确认漏洞之后我按照平台要求截了图、记录了测试时间、URL、Payload和漏洞影响整理成了一份清晰的报告提交。提交之后很快就收到了确认消息我的第一个漏洞就这样落地了。整个过程回头来看技术难度其实不高路径穿越是一个很老的漏洞类型但为什么能挖到我觉得核心原因有两个一是信息收集让我找到了多个测试入口二是测试的时候我没有因为XSS失败就放弃而是挨个功能点去试把每个输入位置都过了一遍。3.6 这个案例给新手的启示漏洞不一定在你最关注的点上。我花了最多精力去测XSS结果突破口在文件下载上。所以测试过程中不要因为某个类型的测试没结果就急躁把功能点全覆盖才是正事。漏网之鱼就在你最常用的思路之外。路径穿越这个点其实很多新手看到download参数不会深入去测觉得“这就是下载文件用的”。但你多试一层可能就多一个漏洞。4. 学习资源与笔记方法视频教程这样用效率最高很多人手里存了一堆视频教程但看完就忘。我分享一下我是怎么用视频和学习笔记配合最大化学习效果的。4.1 我筛选视频教程的三个标准标准一有靶场实操而不是念PPT。一个漏洞的讲解如果只是放几张截图没有实际打开终端操作一遍不仅催眠而且你没法学到真正的测试过程。我看的教程里比较好的都是直接打开本地靶场把从发送数据包到看到漏洞效果的完整过程展示出来而且每一条命令都会解释在做什么。标准二有原理推导而不是只给Payload。如果一个教程只给你几个现成的Payload让你复制粘贴那你只能学会“用一个点”一旦目标过滤了其中某个字符你就不会玩了。好的教程会告诉你为什么要加引号、为什么要用注释符、为什么可以用某种编码绕过。标准三有修复建议。我觉得看修复建议是最能提高漏洞敏感度的方法因为它反向告诉你“代码怎么写的会出问题”。看多了修复方案你再看到类似代码的时候自己就能嗅到问题所在。4.2 我的学习笔记模板做学习笔记这事我也摸索了很久。最早的笔记就是大段大段复制教程里的内容后来发现根本没法复习。后来我把笔记改成下面这个模板效率一下子上来了漏洞名称写清楚这个漏洞叫什么。产生原理用自己的话写一遍不许复制原文。写不出来的话说明还没理解透。触发条件哪些条件满足的情况下这个漏洞才可能被利用。危害场景攻击者利用这个漏洞能做到什么程度读文件改数据拿权限。实操步骤用步骤方式列出自己在靶场里的操作过程关键Payload要贴进来。绕过思路如果目标有过滤常规思路不可行时可以从哪里绕。一个漏洞一张卡片复习的时候我只看卡片基本能在几分钟内把一个漏洞从原理到利用串一遍。4.3 关于视频教程的“倍速”建议很多教程动辄几个小时全是实操过程二倍速看很容易错过关键细节。我的经验是第一次接触一个漏洞类型原速看完复习时用二倍速看只看操作流程跳过废话。遇到看不懂的命令我会暂停下来手动查一下这个命令的每个参数是什么意思绝不稀里糊涂地往下走。4.4 笔记一定要自己整理别用别人现成的我也下载过别人整理好的“漏洞学习笔记”文件很大、内容很全但我基本没看过因为那不是我自己消化的东西。后来我干脆不看别人的笔记只从自己的实操里提炼卡片虽然慢但每张卡片都长在脑子上。学习笔记的价值不在于“全”而在于“自己写得出来”。5. 常见问题与排查技巧实录入门过程中每个人都会遇到各种莫名其妙的问题。这里把我遇到比较多的情况整理成速查表帮你省点排查时间。5.1 靶场打不通各种报错怎么办现象常见原因排查思路靶场页面打开空白容器没有启动或者服务没起来检查一下靶场的运行状态确认端口是否监听发送的Payload没任何反应参数名不对或者注入点根本不在这个参数先看正常请求的返回再对比修改后的返回差异打开靶场提示数据库连接失败本地数据库没初始化重新执行一次数据库初始化脚本扫描器跑完了全是误报目标带WAF或者检测规则太敏感先用单个漏洞类型手工验证不要让扫描报告带偏你本地虚拟机连不上互联网DNS配置有问题检查虚拟机的网络连接模式是否能正常访问外网5.2 你测试的时候“没有漏洞”的真相很多时候你测不出漏洞不是因为目标没有漏洞而是因为这几种情况你测的只是登录前的功能而真正的漏洞在登录后的业务逻辑里。注册一个账号往往能让你看到更多攻击面。你的测试没有覆盖到所有参数。一个请求里可能有十几个参数你只测了其中一个当然发现不了问题。我当时挖到第一个漏洞之前也出现过因为没测某个隐藏参数而错过一个注入点的情况。你忽略了信息收集的深度。有些漏洞只在特定目录下存在如果你没做目录提取压根不会访问到那部分功能。5.3 踩过的坑扫描器高并发把自己的IP封了这个坑我说出来都是泪。有一次我为了节省时间把目录扫描器的并发线程调得非常高结果目标的安全设备直接把我当前网络出口的IP封禁了一段时间。从那以后我给自己定了规则目录扫描并发线程数控制在默认值以下并且每次测试时长不超过规定范围遇到有安全设备的系统更要降低频率。做测试和渗透本质上是和防护方互相试探的过程讲究的是隐蔽和节奏而不是猛冲猛打。5.4 提交漏洞报告时一定要写清楚什么一份好的漏洞报告会直接影响到漏洞是否被确认以及漏洞等级的评定。我提交第一份报告的时候平台审核人员反馈说我的报告写得不错我自己总结了几个关键点漏洞地址和参数写清楚精确到URL和具体参数名方便复现。复现步骤要完整从打开浏览器开始每一步要点哪里、输入什么、看到什么都要写出来。如果复现步骤太跳跃审核人员可能直接打回。影响范围要客观不要夸大也不要缩小。比如任意文件读取能读到哪些敏感文件、会不会影响其他用户这些要写清楚。修复建议要有参考价值哪怕写得简单也比不写强。比如对文件下载功能来说可以建议做白名单校验拒绝包含路径穿越符号的请求。6. 工具选型与环境搭建把装备配齐但不炫技工欲善其事必先利其器。但这里我也强调一下工具不是越多越好而是够用就好。我工具链的组成非常精简。6.1 我的常用工具清单用途分类工具具体用途信息收集子域名枚举工具收集子域名扩大攻击面信息收集网络请求工具手动发送HTTP请求、修改请求包观察响应端口扫描网络端口扫描工具快速发现开放端口和运行服务目录扫描目录爆破工具探测隐藏目录、备份文件和敏感路径漏洞检测综合扫描器作为辅助验证不依赖它的报告漏洞利用浏览器开发者工具查看网络请求、修改前端逻辑、分析数据包笔记工具本地笔记软件整理学习卡片和每个目标的测试记录工具清单虽然简单但每一个我都能熟练到不看帮助文档直接敲参数。有些朋友觉得工具多显得专业实际上在真正测试的时候频繁切换工具反而降低效率。6.2 为什么我不建议新手一开始就依赖自动化扫描器挖到第一个漏洞之后我更加确信一件事自动化扫描器适合做广度筛查但真正要出成果一定得靠手工验证。扫描器输出一堆误报你如果不懂原理根本分不清哪个是真的。我后来养成了一个习惯扫描器扫出来的任何结果我都手工重放一遍确认返回包和响应差异才把它写进报告。这种“手工优先”的习惯也帮助我培养了对数据包的敏感度。现在看到一个请求我不光能看懂它在干什么还能快速判断哪些参数容易出问题、哪些参数是开发自己加的隐藏逻辑。6.3 本地靶场的搭建经验本地靶场是学习阶段最重要的设施我用的方案是拿一台低配置的电脑装了虚拟化环境在里面跑了几套开源靶场系统。搭建的时候有两个注意点尽量模拟真实的网络拓扑比如把靶场系统和攻击机放在同一个二层网络里不要搞复杂的NAT不然有些功能会因为网络模式问题出现诡异故障。给靶场系统拍快照打坏了随时回滚不用重新初始化效率高很多。7. 一些真心话关于成长节奏与方向从零基础到挖到第一个漏洞我大概花了几个月时间这其中真正裸奔的时间其实不长但走了不少弯路。如果让我带着现在的经验重新走一遍我会把时间分配得更科学基础原理占三成靶场实操占五成信息收集方法占两成。因为信息收集是你整个测试过程的总开关信息收集做得越好能挖到东西的概率越高。而靶场实操是让你真正能把“看懂的”变成“会做的”。很多人在学习的时候特别喜欢问“学这个有没有用”我的回答是对抗型的技术学习的时候没有一步是白走的。你在信息收集里花的时间会在某个目标的子域名里还给你你在靶场里反复练习的注入技巧会在某个真实系统的参数后面等着你你踩过的每一个报错的坑都会让你排障的时候更快一眼定位问题。最后再分享一个小技巧测试的时候养成用不同角色账号测试的习惯。我之前挖到路径穿越的时候用的是最普通的用户账号后来我自己在另一套靶场里发现有一些功能只有管理员账号才能看到而这些管理功能往往权限更高、过滤更松出漏洞的概率更大。注册不同权限的账号分别去测试不同模块能让你把一个站点的攻击面看得更立体。这也是我从第一份漏报里得到的最有价值的一条经验。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑