1. 项目概述:从“源鲁杯”赛题复现说起
最近在整理CTF(Capture The Flag,夺旗赛)的学习笔记,翻到了之前关注的“源鲁杯2024”网络安全竞赛。这类比赛对于想入行安全或者提升实战技能的朋友来说,是个绝佳的练兵场。比赛中的Web和Misc(杂项)题目,往往最贴近真实场景,也最能考验一个人的综合能力。光看别人的Writeup(解题报告,简称WP)总觉得隔靴搔痒,很多细节和思考过程一闪而过。所以,我决定动手把其中几道有代表性的Web和Misc题目,在自己的环境里完整复现一遍。
这个“复现”的过程,远不止是照着步骤把答案敲出来那么简单。它更像是一次深度“尸检”,你要搭建靶场、分析流量、调试代码、尝试各种可能的攻击路径,最终不仅要拿到那个 flag ,更要彻底搞懂题目背后的漏洞原理、出题人的意图以及自己思维上的盲区。对于新手,这是从“知道”到“会用”的关键一步;对于老手,这也是保持手感、查漏补缺的好方法。今天这篇长文,我就以“源鲁杯2024”的部分赛题为引子,拆解Web和Misc方向的复现全流程,分享其中用到的工具、思路和踩过的坑。
2. 环境准备与靶场搭建
复现的第一步,也是最重要的一步,就是还原题目环境。很多WP只给了payload(攻击载荷),如果你直接对着一个不存在的网站打,那肯定是徒劳的。
2.1 确定题目源码与依赖
通常,赛后官方或参赛选手会放出题目的源代码(Dockerfile、源码包等)。我们的首要任务就是找到它。以一道典型的PHP Web题为例,源码包里可能包含:
-
index.php:主入口文件。 -
flag.php或.flag:存放flag的文件,通常有严格的访问限制。 - 其他功能文件,如
login.php、upload.php等。 - 一个
Dockerfile或docker-compose.yml,用于描述构建环境。
注意 :务必从可信渠道获取源码,避免源码本身被篡改植入后门。优先选择比赛官方仓库或知名选手的GitHub仓库。
拿到源码后,别急着启动。先快速浏览目录结构,特别是 Dockerfile ,它能告诉你题目运行在什么基础镜像上(如 php:8.1-apache )、开启了哪些扩展(如 gd 、 mysqli )、以及是否有特殊的配置(如禁用了某些危险函数 disable_functions )。这些信息直接影响后续漏洞利用的方式。
2.2 本地Docker环境部署
Docker是复现CTF题目的神器,它能保证环境的一致性。假设我们拿到的是一个包含 Dockerfile 的题目。
- 构建镜像 :在源码目录下打开终端,执行
docker build -t yuanlu-web-2024 .。这个过程可能会下载基础镜像和安装依赖,需要一点时间。 - 运行容器 :构建成功后,运行
docker run -d -p 8080:80 --name yuanlu_ctf yuanlu-web-2024。这会将容器的80端口映射到本地的8080端口。 - 访问验证 :打开浏览器,访问
http://localhost:8080。如果看到题目界面,说明环境搭建成功。
实操心得 :有时候题目可能需要连接数据库。如果源码包里有 docker-compose.yml ,直接运行 docker-compose up -d 会更方便,它通常会一并启动MySQL或Redis等服务。另外,记得在复现完成后,用 docker rm -f yuanlu_ctf 和 docker rmi yuanlu-web-2024 清理容器和镜像,避免占用磁盘空间。
2.3 关键工具链准备
工欲善其事,必先利其器。复现Web和Misc题目,以下几类工具必不可少:
- 代理与抓包工具 :
Burp Suite(社区版即可)是核心。用于拦截、修改和重放HTTP/HTTPS请求,是测试SQL注入、文件上传、逻辑漏洞的必备。OWASP ZAP是一个不错的免费替代品。 - 浏览器开发者工具 :Chrome/Firefox的DevTools。用于前端代码审计、网络请求分析、调试JavaScript以及查看/修改Cookie、LocalStorage。
- 目录/文件扫描工具 :
dirsearch、gobuster。用于发现题目隐藏的目录、备份文件(如index.php.bak)、配置文件等。 - 编码/解码工具 :
CyberChef(在线或离线版)。一个“网络瑞士军刀”,集成了各种编码(Base64、URL、Hex)、哈希、加密解密、正则提取等功能,图形化操作非常直观。 - 脚本编写环境 :Python3是主力。准备好
requests库(发HTTP请求)、hashlib(哈希计算)、pwntools(处理交互式题目)等常用库。一个顺手的IDE或编辑器(如VSCode、PyCharm)能提升效率。
3. Web题目复现核心:漏洞挖掘与利用
Web题目千变万化,但漏洞类型相对固定。复现时,要带着“攻击者”思维去审视每一处交互。
3.1 代码审计与黑盒测试结合
拿到一个有源码的Web题,我习惯先进行“白盒审计”,即阅读源代码。
-
入口点梳理 :找出所有用户可控的输入点。包括:


429

被折叠的 条评论
为什么被折叠?



