BITs2Sys 2025 招新计划
BITs2Sys 2025 招新计划
引言
我应该学CTF吗?
我们为什么要学习一种技能?要么是因为喜欢,要么就是对自己有好处。喜欢自然不用说,那下面就列举一些学习CTF的好处。
- 综测和竞赛加分:CTF中的大型比赛往往是省市级别的,都能有不错的综测加分。如果取得了名次,更是有在竞赛保研中获得加分的机会。比如在我们学校举办的ISCC里面获奖,就能有丰厚的竞赛加分。
- 市场竞争力的提升:很多CTF比赛是由企业举办的,比如字节跳动举办的ByteCTF、腾讯举办的TCTF,如果在里面取得优异成绩就可以获得直通面试的资格。另外,在很多公司的岗位要求里都写了,有CTF经验优先。这也体现了企业对CTFer的青睐。而且,学习CTF的过程本身就是对自身能力提升的过程。CTF中用到的知识,很多都是与工作生产息息相关的,比如说Web渗透,代码审计,软件逆向,红蓝攻防等。在CTF的某一方向深入发展,能够为找到一份好工作打下基础。如果在比赛中取得了不错的成绩,又给自己找到了实习和各种项目,那本科就业的竞争力不一定比研究生差,如果是研究生那更是锦上添花。
- 学习能力的提升:当你进入CTF的学习后就会有很多问题。我应该学什么?我应该怎么学?我应该学到什么程度?这个到底要不要先学?有没有什么好的资料?这个课和那个课到底看哪个?而解决这些问题的过程,对你的自学能力会有极大的提升。与学校课程不同,CTF没有课本,也没有学习指导,也没有固定的老师,一切都不是按部就班的。整个学习的过程都由你自己全权组织。这种自学能力会让你受益无穷。
- 人脉的扩展:在学习CTF的过程中,你会认识很多人。除了自己学校的学长学姐,还有在各种比赛各种群里面认识的各种网友。他们可能是萌新,也可能是大佬,不过一般都比较友善。你可以与他们讨论问题,也可以讨教学习路线,甚至还能让他们帮你介绍工作。总之,多水群,多交流,这样才能够减少信息差。
怎样学好CTF
- 选好方向:CTF里每个方向的侧重点不同,学习的内容差别也比较大。一开始可以每个方向都简单了解一下,最后再结合自己的兴趣和天赋做出选择。一般每个人选一到两个方向就可以了,大佬除外。
- 广搜信息:CTF的知识很少有成体系的完整课程,知识点一般都分布在各种文章和视频,所以要学会搜集信息。一般的社区有:博客园、先知社区、Freebuf、GitHub、CSDN等。视频课程除了b站以外,就是各种网络上各种机构的课程,有时候可以找到免费的资源,有时候可能需要付费。使用“魔法”的技能也必不可少。
- 学会提问:在提问之前,你需要先自己尝试解决问题(各种搜索引擎,各种AI),积累一些常见的问题原因,比如:是不是浏览器问题,是不是版本问题,是不是中英文问题等。提问时,要具体描述你的问题,包括你的预期目标,执行了什么代码或命令,你的环境,操作系统和软件的版本,问题的截图或代码等。
- 多交流:凡是有关计算机的学科,与人交流都是不可缺少的一环,否则就不会有社区了。有问题的话就要在思考的基础上多讨论,无论是题目,还是学习心得,甚至是环境配置。有时候一个人需要半天才能解决的问题,群友一句话就给你点通了。
- 好记性不如烂笔头:当天学的新知识要记笔记,想起来就要复盘一遍,这样才不容易遗忘,而且能让你的学习留下痕迹。可以学习使用在线笔记应用搭建自己的知识库,比如:思源笔记、notion等。
如何报名
请先认真阅读引言部分
- 填写报名问卷:https://docs.qq.com/form/page/DSUhGWWJGd1d0Z0xF
- 按照报名问卷结束页所写,加入QQ群,仔细阅读群公告
[!NOTE]
任何问题,都可以直接在群里提问,通常会在24小时内得到回复。
学习资料
CTF入门
练习平台
学习路线
[!IMPORTANT]
仅供参考
Reverse
逆向题目侧重于考察代码审计和逻辑能力。
常见的逆向题目包括了maze问题(迷宫),z3约束问题,常规的加密算法等等,可以先在B站上观看星盟的逆向视频(https://www.bilibili.com/video/BV1bR4y197nE),学一些基础内容,包括静态调试、动态调试、脱壳等等(手动脱壳暂时不要求)。
在学会这些基础知识后,可以多做一些简单的逆向题,并了解一些加密算法,遇到时可以较快的识别。
完成这些后可以去尝试不同编程语言的逆向,如C#(需要使用dnspy)、Rust、Go逆向,可以先自行编写这类程序然后去逆向。
Reverse中还包括了Mobile逆向,主要分为三类:Android逆向,HarmonyOS逆向(较少)以及iOS逆向(非常少)。常见的工具包括jeb、jadx以及夜神模拟器等,逆向时需要审计Java代码,有时还需要去查看Native层代码,整体难度不会太高。
PWN
关于PWN的内容和学习可以参考CTF Wiki Pwn部分
前置知识需要:C语言/汇编(x86_64)基础,Linux基础,一点点逆向基础
做题环境需要Linux环境,Windows下需要安装Linux虚拟机(Ubuntu/kali,熟悉的可以用自己喜欢的)
- 汇编入门参考:Hello CTF、王爽《汇编语言》 (适合入门自学,虽然是16位汇编但原理是一样的)
- C语言参考:gcc相关的手册(C语言pwn题一般用的编译器是gcc)、C Reference
- Linux:建议阅读the art of commandline,熟悉
coreutils
、binutils
、vim
等工具的使用
(非必要)建议阅读:CSAPP前4章/第二部分、Missing Semester的课件
在了解汇编/C语言基础后,初学者可以先从栈溢出,格式化字符串开始学习。栈溢出的资料可以参考CTF Wiki和Hello CTF的。
- 本地:
配合ROP尝试在本地打通题目,get shell - 远程:
学习nc
命令及一些基础Linux命令(ls
,cat
)的用法,拿到远程的flag - 进阶:
进阶的内容有复杂shellcode编写,sandbox(沙箱),heap(堆漏洞),multi-arch(不同架构的汇编),kernel pwn(内核漏洞利用)等。和逆向结合有vm pwn(虚拟机pwn)等。建议先从ROP学起,打牢基础在进行下一步的学习
Crypto
密码学(Cryptography)一般可分为古典密码学和现代密码学。
古典密码学的题目一般依靠个人对加密方式的熟悉程度,没有普遍的技巧,对数学水平要求不高,要求个人的积累。
而现代密码学的题目分为对称加密和非对称加密,对数学水平的要求较高,这里整理了一部分资料供学习参考:
链接: https://pan.baidu.com/s/1fv8ldbu4xPhP5HsWv4IE1A?pwd=3w82
Web
知识图谱:https://pan.baidu.com/s/1wWOfy2vkhb6Q-cwXRL6J-g?pwd=cju3
学习路线可以参考知识图谱。不过知识图谱并不完整,需要你通过学习来自己补全。
Misc
Misc方向可以细分为很多领域,如:隐写术、流量分析、数字取证、社会工程学、算法编程等等。
此外,有时AI和区块链也会纳入Misc方向。
大部分中低难度比赛对于隐写、取证、信息搜集方面的考查较多,且简单的题目以对工具的使用为主,不涉及繁杂的代码编写。对于计算机零基础的同学,可以考虑选择从这个方向开始学习。
作为入门,可以阅读CTF-Wiki、Hello CTF,观看从0到1教学视频中的Misc方向,了解各个细分领域是什么,学习一些基础的隐写方法、编码算法、流量分析方法、开源情报收集技巧等等。
作为提高,可以选择数字取证、AI、区块链等方向进行深入研究。
脑洞较大且喜欢猜谜的同学非常非常非常适合这个方向。
考核要求
[!IMPORTANT]
- 不限年级、不限专业。
- 题目不必独立完成,Google / 群里讨论 都可以,但是一定要自己理解后做出,不能直接照抄。
- 所有解答题目必须写Writeup,格式不限,需体现思考过程、解题过程。
- 完成考核要求的同学,请主动联系各方向负责人进行面试,如果通过就可以加入我们啦。
- 选拔划分方向仅供不明确自己兴趣爱好的同学参考,如果你对多个方向感兴趣,可以联系负责人。无论通过何种选拔方式进入战队,以后均可自由选择自己感兴趣的方向,没有任何限制。
- 以下各方向选择任意一个即可。
Reverse
1.完成链接中的常见题型:https://pan.baidu.com/s/1veAw6D_AYxACV0ENrBo3Ew?pwd=cckp
2.完成下列题目: https://pan.baidu.com/s/1in_5a5uVmWGrDeCGOBghmA?pwd=22za
PWN
完成以下题目,撰写writeup
- 基础ROP
- BUUCTF rip
- BUUCTF jarvisoj_level0
- NSSCTF HNCTF2022 ret2shellcode ret2shellcode
- NSSCTF MoeCTF2023 ret2libc ret2libc
- 格式化字符串
- 进阶(不强制要求)
- pwnable orw 初级sandbox(orw)
- NSSCTF HNCTF2022 ret2csu ret2csu
如果有兴趣,可以继续尝试HNCTF2022的其他题目/BUUCTF第一页的题,或学习system call(系统调用)/sandbox相关的知识
Crypto
1.完成BUUOJ中古典密码题目任意15道。
2.完成NSSCTF中RSA入门题9道(已打包在资料中)。
3.完成challenge综合题6道(已打包在资料中)。
Web
- 熟练掌握Python编程,掌握计算机网络基础知识。
- 阅读知识图谱,完成全部知识图谱中的题目。
- 完成NSSCTF中任意20道带有
Python
标签的Web题目。 - 完成下列题目:
- BUUOJ——[ZJCTF 2019]NiZhuanSiWei
- 攻防世界——warmup
- 攻防世界——unfinish
- 攻防世界——fakebook
- 攻防世界——bug
- 攻防世界——isc-07
Misc
以下四个方向任意选择一个即可。
- Misc基础
- 掌握常见隐写方法和编码方法。
- NSSCTF中带有
图片隐写
或音视频隐写
或编码分析
或压缩包分析
或文档隐写
标签的Misc题目任意30道。
- 流量分析
- 掌握计算机网络基础知识。
- NSSCTF中带有
流量分析
标签的Misc题目任意25道。
- 数字取证
- 掌握数字取证的常用软件,包括但不限于volatility2、volatility3等。
- NSSCTF中带有
电子取证
标签的Misc题目任意15道(一道题的多个小问整体算一道题)。
- 区块链
- 掌握Solidity编程,了解Rust编程。
- Ethernaut靶场前19题。
- NSSCTF中ETH题目任意4题。
附录
BITs2Sys 主页:https://bitctf.cn/
BIT CTF Community 主页:https://community.bitctf.cn/
BIT CTF Community QQ群:912819172