ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

CTF新手入门:一条从靶场到赛场的行动路径

CTF新手入门:一条从靶场到赛场的行动路径 收藏了一堆“CTF入门攻略”的朋友你真的打开过几次这个场景我在身边见过太多次了工具包下了三个G靶场链接存了十几个比赛报名页面收藏了七八个但一个月后连一个Flag都没拿到过。原因很简单你缺的不是资源是一条能走下去的行动路径。这篇东西不打算再给你罗列一堆网盘地址而是把“新手入门CTF”这件事拆成三个阶段先搞清楚比赛到底在比什么再配好最小可用的环境与工具包然后用本地靶场把基础漏洞一道道练透最后从从容容上第一次赛场。1. 先搞明白CTF到底比的是什么这决定了你后面三个月会不会白费劲很多人一谈到CTF第一反应是“黑客技术擂台赛”第二反应是“我是不是得先学渗透测试”。这两个想法都只说对了一小半。CTFCapture The Flag夺旗赛本质上是“在一个被设计好的封闭题目里找到一段特定字符串Flag”。1.1 三种主流比赛形式先分清再入坑解题模式Jeopardy大部分线上入门赛和高校校赛都是这种。平台挂出一排题目每道题都藏着一段类似flag{...}的字符串解出来提交得分。Web题归Web题逆向归逆向互不干扰特别适合新手。攻防模式AWDAttack With Defense给你一台真实服务器你要一边守住自己的服务不被别人打穿一边去攻击别人的服务器拿Flag。这种模式火药味重、十分刺激但需要比较扎实的Web和运维功底新手第一年可以只看个热闹。混合模式先解题拿分再进入攻防环节大型比赛常用。新手阶段你只需要关心第一种解题模式。它的好处是每道题都是独立的知识点做对一道就拿到一份正反馈这种反馈机制会让学习过程舒服很多。1.2 五大赛道我用大白话给你拆一遍CTF题目通常分成五个方向江湖上管它们叫五大赛道赛道考什么一句话描述Web安全Web漏洞利用网站哪里写得不对你就往哪里打Reverse逆向程序分析还原把一个程序拆开看找到它藏起来的答案Pwn二进制利用漏洞利用拿权限让程序干它不该干的事Crypto密码学编码与加解密从一串乱码里还原出人话Misc杂项隐写、流量、文件分析侦探题从蛛丝马迹里找线索其中Flag有一段通用格式大多长成flag{this_is_a_sample_flag}或ctf{...}这样。你的全部目标就是在题目的某个文件、某段网络流量、某条数据库记录里把它挖出来。1.3 新手最容易误解的一条常识先澄清一个关键误解CTF不是渗透测试。渗透测试面对的是一个真实系统目标可能是“拿数据”“写报告”而CTF面对的是出题人特意埋好的漏洞点答案往往只有一种。换句话说CTF更像“在实验室里做实验”渗透则像“给真实房子做安检”。这导致一个反直觉结论想入门网络安全不一定非要先学渗透再玩CTF。反过来通过CTF的Web题去理解漏洞原理再去接触真实渗透路径反而更顺。理解了这一点你再看各种入门攻略里铺天盖地的“Kali Linux”“渗透测试流程”就不会被带偏了。CTF入门真正需要的是一台能跑工具的电脑、一套最小工具包、几个本地靶场以及每周稳定的练习时间。2. 第一周只做三件事跑通虚拟机、建好工具包、把Python跑起来2.1 别急着装Kali先装一个虚拟机这可能是被误解最深的操作。很多新人看了几张截图直接把Kali Linux装成双系统结果发现命令行用不惯、网卡驱动恶心、显卡出了问题第三天就放弃了。记住一个原则CTF练习环境应该是“一次性”的弄坏了随时能还原。第一周最稳妥的做法在你当前系统上装VMware Workstation Player或VirtualBox再装一个虚拟机镜像。新手期建议先用Ubuntu Desktop等真要跑Pwn题时再上Kali Linux也不迟。配置参考CPU分配2核心足够内存分配8GB不能说大但够跑浏览器和工具磁盘分配50GB动态分配即可用虚拟机的核心好处是快照功能。装好系统后拍一张快照之后你随手把环境搞坏了一分钟还原原地复活。2.2 一套“够用就好”的CTF工具包清单市面上到处是十几个G的“全套工具包”下载解压之后你只会对着几百个文件发愣。我的建议是用到哪个装哪个不要提前囤。初期这套就够了工具干什么用建议安装时间Burp Suite Community官方免费版抓包、改包、重放请求Web题头号主力第一周Wireshark抓包分析Misc流量题必备第三周CyberChef / 随波逐流CTF编码工具编码解码、古典密码一键处理第三周Ghidra开源或 IDA Free逆向反汇编看C/C程序逻辑第四周了解即可x64dbgWindows程序动态调试先不用装dnSpy.NET程序逆向遇到再装Python3 pip写脚本批量处理数据第一周立刻装Hoppscotch / Postman接口调试偶尔用得上不急着装记住工具永远是手段不是目的。你在靶场上遇到一道文件包含题Google一下“文件包含 工具”都比提前囤一个“全网最强工具包”有用。2.3 Python不是选修课是生存技能很多新手总以为“我是来学安全的为什么要写代码”。这么说吧CTF里大量题目要求你处理数据、批量尝试、还原字符没有脚本你会发现连个Base64批量解码都做不利索。举个例子一道题给了你一个文本文件里面每行都是Base64编码你要把所有解码结果拼起来。没有Python你只能手动复制粘贴有了Python就是几行的事import base64 with open(flag.txt, r) as f: lines f.read().strip().split(\n) result for line in lines: result base64.b64decode(line).decode(utf-8, errorsignore) print(result)Python入门真的不用啃完整本语法书。会读写文件、会用requests库发请求、会写for循环和if判断基本就覆盖了第一年九成的场景。第一周同时要过一遍Linux的常用命令最小集。别背三十个先会这几个ls、cd、cat、grep、find、chmod、curl、nc、python3。每条命令配一个使用场景比如“grep -r flag .”可以递归找当前目录带flag字样的文件Misc题里经常用到。3. 本地靶场是新手的主战场不用注册、随便折腾还能一键重置3.1 为什么是本地靶场而不是直接上在线平台在线CTF平台当然能练但新人往往忽略一个重要问题在线平台是给别人比赛的不是给你瞎折腾的。你把一个注入Payload打过去轻则题目环境被你打崩重则触发封禁。本地靶场没有这个问题它在你自己机器上跑想怎么试就怎么试想断点就断点写错了大不了重置。最关键的本地靶场的源码是公开的。你可以直接翻开源代码看这一关漏洞到底是怎么出现的。这是在线平台不具备的学习优势——“看着答案找问题”对形成漏洞判断力极有帮助。3.2 五个必搭靶场各管一块能力DVWADamn Vulnerable Web ApplicationWeb安全入门的老牌靶场覆盖SQL注入、XSS、文件上传、CSRF等十余个模块每题分低中高三个难度。通关标准分两种会用工具打进去同时能说清漏洞原理。Pikachu中文漏洞靶场名字皮卡丘对英文不太好的朋友非常友好。它把很多Web漏洞用中文场景讲得明明白白尤其适合XSS和CSRF的入门理解。sqli-labsSQL注入专项靶场共65关每一关都是一种注入姿势字符型、数字型、报错注入、盲注、堆叠注入……。你不需要全部打完前20关足够建立SQL注入的完整感觉。upload-labs文件上传专项靶场共21关围绕各种上传绕过前端校验、MIME类型、扩展名黑名单、解析漏洞等。每过一关你对“为什么人家能绕过我的校验”就会有更深理解。xss-labsXSS专项靶场关卡制从小过滤到大绕过是理解前端安全的绝佳基地。3.3 用Docker一键起靶场告别“环境地狱”不少新手死在了环境搭建这一步装个靶场缺依赖、端口被占用、权限不对三小时过去了还没打开页面。强烈建议直接学Docker它把你和运行环境之间的依赖问题全部隔离掉。以DVWA为例只需要两条命令docker pull vulnerables/web-dvwa docker run -d -p 8080:80 vulnerables/web-dvwa浏览器打开http://localhost:8080就能用了。sqli-labs和Pikachu也有对应的Docker镜像。一条命令启动一条命令删掉重建比原生部署省掉无数时间。如果你愿意再进一步可以用docker-compose把多个靶场统一管理version: 3 services: dvwa: image: vulnerables/web-dvwa ports: - 8080:80 pikachu: image: area39/pikachu:latest ports: - 8081:80搭建中遇到端口冲突改一下冒号左边的宿主机端口即可右边的容器端口不要动。后期想玩VulnHub那种偏真实环境的靶机集合也不是一上来就该碰的事先把这几个靶场打通再说。4. 五大赛道的入门路线第一站Web顺手把Crypto和Misc打基础4.1 Web从看懂HTTP到拿下第一个FlagWeb是五大赛道里对新手最友好的因为反馈直接打进去就能看到效果。第一步先看懂HTTP报文。抓一个包你会看到一个网站的请求分四部分请求行、请求头、空行、请求体。理解GET和POST的区别理解200/302/404/500这些状态码在说什么。接着分两条线走前端线HTML、JavaScript、Cookie和后端线PHP、SQL、文件操作。不需要学得多深能用view-source看网页源码会看Burp里的请求能识别一段PHP代码里的$_GET、$_POST、include就算过关。Web题常见类型就那么几类每个配一个靶场练习SQL注入进sqli-labsXSS进xss-labs文件上传进upload-labsRCE远程命令执行和文件包含可以回到DVWA和Pikachu。你不需要系统学完所有Web框架知识点直接奔着“这一关漏洞怎么触发”去学效率高得多。4.2 Crypto不是让你算数学题而是先认编码很多新手听到Crypto就慌以为要学高等数论。其实入门阶段九成是编码和古典密码真正刷到现代密码RSA、AES还有很长一段路。先学会识别各种编码。aGVsbG8这种末尾带等号的是Base6448656C6C6F这种由0-9a-f组成的是十六进制%68%65%6C开头的是URL编码。这类识别与翻译直接用CyberChef或者随波逐流CTF编码工具就能做拖进去出结果。古典密码则重在特征辨别凯撒密码是字母整体平移维吉尼亚密码需要密钥摩斯密码全由点和横组成培根密码只有A和B两种字符。遇到一道Crypto题正确顺序是先判断是什么编码再判断是什么加密最后才是“要不要爆破”。把前面两个判断做好Crypto的入门题就完成了一半。4.3 Misc最容易拿分也最考验细心Misc被戏称为“脑洞侦探题”事实上却是新手最容易拿分也最容易忽略的赛道。它的常见考法就那么几样图片隐写看似正常的一张图可能藏着另一个文件。用binwalk扫描一下用strings看看字符串甚至用zsteg检测LSB隐写。文件分离一个文件头被改过的文件恢复它的真实文件头才能打开真正的线索。流量分析给你一个pcapng抓包文件用Wireshark打开追踪HTTP流、过滤USB协议找到传输的图片或密码。二维码修复三个定位角被挖掉补上再扫或者一张残缺的二维码用工具修复。做Misc题的基本功就是熟练使用Linux的file、binwalk、strings命令配合Python脚本做数据提取。这类题对“赛场上用最少时间拿最多分”很有帮助强烈建议和Web并行推进。4.4 Reverse和Pwn先建立概念再决定是否深入这两个赛道难度陡峭新手期不建议当主力。Reverse逆向要理解程序编译后的二进制结构Pwn更要理解内存布局和系统调用。最低限度的认知可以是一个C程序编译成ELFLinux下或PEWindows下逆向就是把它还原成近似源码。用Ghidra或IDA按F5反编译常能看到printf、scanf这类函数调用flag往往藏在某个判断分支里。Pwn里最著名的“栈溢出”一句话概括就是“往一个固定大小的杯子里倒水水溢出来溅到旁边的地方而旁边可能正好放着控制程序的地址”。不是每个人都要成为Pwn手。不少队伍里Reverse和Pwn是专人负责你完全可以先打Web、Misc、Crypto三条线等有感觉了再回头啃二进制。4.5 第一个月的“每天两小时”练习计划与其东一榔头西一棒子不如给你一张表按表执行时间学习内容目标第一周搭环境装工具跑通DVWA完成DVWA的SQL注入和XSS的低级关卡第二周sqli-labs前10关独立手工完成注入流程第三周Pikachu的XSS、CSRF、文件上传Crypto编码识别各完成80%模块能一眼认出Base64/Hex/URL编码第四周Misc基础binwalk、strings、Wireshark做一次平台月赛独立完成两道Misc题参加一次线上赛感受流程执行这张表的关键不是“做完”而是“复现”每道题做完之后合上书从头再自己打一遍。能独立复现的题才是你的看着答案做出来的题只是你“借来的”。5. 第一次打比赛报名、选题、放弃题目的时机5.1 去哪找比赛和怎么报名练了四周之后第一次参赛很重要它会给你一个直观的坐标系原来自己处于什么水平原来一道题能卡我这么久。比赛信息可以从几个地方获知国内常用的CTFHub和BUUCTF平台有赛事日历和历年题目许多高校网络安全社团办校赛也欢迎校外人员参加一些安全厂商会定期举办面向初学者的月赛。这些比赛的报名流程通常是官网注册账号赛前阅读规则开赛后进平台看题。第一次参赛别选那种高手云集的国际大赛“XX平台月赛”“高校新生赛”最适合。题目难度梯度合理有签到题保底赛后还有官方WriteUp题解。5.2 赛场上最该把握的两个原则先把Misc和Web里的签到题扫完。这类题往往就是考一个编码解码、一个文件分离、一个简单注入十几分钟就能拿下先把分装进口袋再说。一道题卡两小时必须跳。CTF讲究投入产出比动态得分机制下晚交的题分值是下降的。你在一道Reverse上死磕三小时不如回头把Web和Misc的低难度题全捞一遍。很多新手在赛场上犯的最大错误是跟一道Pwn题硬刚了一整场比赛。正确顺序是先扫全部题面把明显简单的全部结算完再回头啃难题。一血的额外加分确实是荣誉但第一场比赛你的目标是“有分可交”。5.3 赛后总结写复盘笔记比再刷十道题都重要比赛结束不是终点复盘才是。很多高分选手的共同习惯是赛后第一时间去看官方WriteUp对照自己卡住的位置找出“是思路没想到还是工具不会用还是知识点压根没听说过”。复盘笔记建议按这个格式记题目名称、赛道、难度我的解题思路分步骤写哪怕没做出来也要写卡点位置卡在哪一步为什么卡住参考WriteUp后的正确路径沉淀知识点这道题涉及什么漏洞、什么工具、什么命令笔记库攒上三五十条之后你会发现自己对题目的判断力明显提高。很多题看一眼就有直觉“这题大概考什么”这种题感就是靠笔记堆出来的。6. 新手期最容易翻车的五个坑踩过两个就赶紧回头6.1 只收藏不落地收藏夹里囤出一个博物馆我见过太多人轮番收藏几十份“入门教程”最后问的问题还是“DVWA到底在哪下载”。应对方法很简单每次收藏一份资料先花十分钟下载或打开把第一个操作步骤做完再收起来。行动不落地所有资源都是负担。6.2 沉迷装环境“环境党”永远到不了比赛日配置Kali、配置Burp、配置代理、配置各种插件每样都搞得漂漂亮亮但一道题都没刷过。工具的作用是帮你解题不是让你欣赏。如果你连续三天都在“调工具”而不是“做题”请立刻删掉多余的工具回到靶场去。6.3 做题只求答案不求过程复制网上的Payload打进去看到Flag就欢呼然后下一题。这种做法最致命——你抄了三遍答案依然不知道这一关的漏洞原理。遇到一道题多问自己一句它为什么能成如果我手写一个简化版能写出来吗6.4 不会看报错信息就到处问人“大佬这个报错是什么意思”这可能是新人提问区出现频率最高的一句话。其实绝大多数报错信息都在告诉你答案端口被占用、密码不正确、权限不够、url地址写错。先自己把报错原文复制到搜索引擎搜一遍解决不了再带着完整上下文去问这样效率最高也最受大佬欢迎。6.5 一个人闷头学不交流不看WriteUpCTF是一项极其强调信息共享的竞赛活动。很多题目你自己想三天想不出来但看了一眼官方WriteUp可能十分钟就明白了。这不是智商问题是经验库太小。定期看别人写的题解、加一个活跃的CTF交流群都是非常必要的学习方式。我个人在实际操作中的体会是入门CTF最怕的不是笨而是“慢”——收集资源慢、搭建环境慢、花在路上的时间比做题还多。如果你把这篇里面的第一步落地这个周末就把虚拟机装上把DVWA起起来两周后你完全可以站到第一次比赛的赛场上。工具包永远在更新靶场永远换花样但“看到一个入口追根究底挖出答案”的能力是打通所有赛道都需要的底核。先把这条路走一遍后面的进阶自然有方向。
返回列表