BITs2Sys 2025 招新计划

253

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等。

如何报名

请先认真阅读引言部分

  1. 填写报名问卷:https://docs.qq.com/form/page/DSUhGWWJGd1d0Z0xF
  2. 按照报名问卷结束页所写,加入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,熟悉的可以用自己喜欢的)

(非必要)建议阅读:CSAPP前4章/第二部分、Missing Semester的课件

在了解汇编/C语言基础后,初学者可以先从栈溢出,格式化字符串开始学习。栈溢出的资料可以参考CTF WikiHello 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

  1. 基础ROP
  2. 格式化字符串
  3. 进阶(不强制要求)

如果有兴趣,可以继续尝试HNCTF2022的其他题目/BUUCTF第一页的题,或学习system call(系统调用)/sandbox相关的知识

Crypto

1.完成BUUOJ中古典密码题目任意15道。

2.完成NSSCTF中RSA入门题9道(已打包在资料中)。

3.完成challenge综合题6道(已打包在资料中)。

Web

  1. 熟练掌握Python编程,掌握计算机网络基础知识。
  2. 阅读知识图谱,完成全部知识图谱中的题目。
  3. 完成NSSCTF中任意20道带有 Python标签的Web题目。
  4. 完成下列题目:
    • BUUOJ——[ZJCTF 2019]NiZhuanSiWei
    • 攻防世界——warmup
    • 攻防世界——unfinish
    • 攻防世界——fakebook
    • 攻防世界——bug
    • 攻防世界——isc-07

Misc

以下四个方向任意选择一个即可。

  1. Misc基础
    1. 掌握常见隐写方法和编码方法。
    2. NSSCTF中带有 图片隐写音视频隐写编码分析压缩包分析文档隐写标签的Misc题目任意30道。
  2. 流量分析
    1. 掌握计算机网络基础知识。
    2. NSSCTF中带有 流量分析标签的Misc题目任意25道。
  3. 数字取证
    1. 掌握数字取证的常用软件,包括但不限于volatility2、volatility3等。
    2. NSSCTF中带有 电子取证标签的Misc题目任意15道(一道题的多个小问整体算一道题)。
  4. 区块链
    1. 掌握Solidity编程,了解Rust编程。
    2. Ethernaut靶场前19题。
    3. NSSCTF中ETH题目任意4题。

附录

BITs2Sys 主页:https://bitctf.cn/

BIT CTF Community 主页:https://community.bitctf.cn/

BIT CTF Community QQ群:912819172