基础知识

这里仅做CTF术语和常识的记录,更多CTF相关知识见Blog CTF Tag

不要觉得CTF很神秘,通俗的说法,你可以把CTF当作网络安全专业的奥赛。

CTF术语

  • CTF -- Capture the Flag, 中文译为“夺旗赛”,指的是网络安全技术人员之间进行技术竞技的一种比赛形式。CTF起源于1996年DEFCON全球黑客大会,以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式。

  • Writeup -- CTF比赛中题目的解答。

  • AWD -- Attack With Defence,一种CTF比赛模式,常见于CTF线下赛,比赛中每个队伍维护多台服务器,服务器中存在多个漏洞,利用漏洞攻击其他队伍可以进行得分,修复漏洞可以避免被其他队伍攻击失分。

  • first blood -- 一血,在CTF比赛中第一个解开某道题的人可称为拿到first blood,一般来说拿到first blood的积分加成会比后面解开此题的人得分更多。

CTF比赛题型

  • Web -- 常见的Web安全类题,但是题目不一定很简单。
  • Crypto -- 密码学相关知识,一般题目都具备一定难度。
  • PWN -- 对程序的逻辑分析,漏洞利用(常见windows, linux平台下)
  • Misc -- 俗称“杂项”,范围很广涉及计算机取证、数据恢复、社会工程学、大数据等,个别题目相当烧脑。
  • Rerverse -- 二进制,逆向分析、破解等相关,涵盖win、linux、Android等平台。
  • Mobile -- 移动端,涉及移动端apk解题等。

为什么要打CTF

练习常用基本技术、拓展渗透测试逻辑思维

如何入门CTF

作为一个CTF萌新,其实前言万语千言我只想说一句:兴趣是最好的老师!

CTF学习

根据分类概略介绍需要学习的知识,有了这些基础,以后深入学习便是水到渠成。

  • PWN/RE -- 汇编、指令集、C、C++、算法、IDA、OD、栈/堆溢出......
  • WEB -- 入门阶段:各类简单漏洞、burpsuite、php、python,深入阶段:Pwnweb、各类代码审计、系统提权,大型工具开发......

据某战队队长评价:

WEB入门最简单
学二进制觉得WEB很简单
学RE的一定能学好二进制

如何从0学习

1.题必须要坚持刷,并学会总结,从量变到质变。

2.掌握基本准备思路。

出题人角度:
1.以最新漏洞出题
2.以最新发表的paper出题(特别是Crypto类的)
3.上次碰到一个实际案例,正好拿来复现下(趋势明显)

PS:一切以脑洞为原则的出题人都不是好出题人。
做题人角度:
1.功夫在平时,记得追踪最新漏洞
2.不要期望出题人的点你都遇到过
3.要有充足耐心,仔细观察每一个点

PS:本地各种CTF工具记得提前准备好,以防线下赛断网(局域网)环境操作。

3.多参加CTF比赛,特别是高质量赛事

国际赛事: defcon、HITCON、0CTF、RWCTF等

国内赛事: 护网杯,各类赛事(参与度好,题目不太难,但是质量参差不齐)

4.保持良好的参赛心态

  • 一颗永不放弃的心
  • 平常积累一些trick(看大佬的blog和writeup,特别是CTFtime的wp,要善于学习他人的思路)
  • 不要期望出题人的出题点你都见过
  • 仔细观察每一个点
  • 学到东西才是关键
  • 日常不要仅限于看过,要尽量去复现
  • 有时候不是你不会,而是没有坚持研究下去
  • 多研究,以赛代练
  • 扩大知识面(理解常见漏洞原理,学习开发,复现题目代码等)

如何学习Web

1.前期书籍+刷题
2.巩固所学的各类基础漏洞知识
3.尝试利用PHP、Python等语言去编写exp、工具、平台等
4.真实漏洞的复现(各类CVE、CMS漏洞等)
5.从做题人尝试转变为出题人

Web选手如何去打AWD(Attack With Defence)

  • AWD考察的是什么?
1.漏洞的审查能力
2.快速编写脚本的能力
3.权限维持的能力
  • WEB选手需要什么?
1.丰富的代码审计技巧
2.熟练运用python
3.一整套自己的权限维持流程

CTF团队建设

虽然自娱自乐打CTF的老赛棍不乏一枝独秀,但若能组建一个相对稳定的CTF团队,无论是从学习还是参赛角度来说,那都是极好的。

需要什么?

1.一个灵魂人物(队长,技术最好别太差)
2.团结一致
3.学校、老师的支持
4.定期的训练
5.不气馁,相信自己以及队友
6.定期总结分享
7.可以使用看板工具辅助管理好任务

团队人员太多如何处理?

0.确定好入团流程,严进
1.定期筛选
2.老选手的传承

如何选人?

1.前期的定期培训
2.内部选拔赛,选择有特长和技术全面的人
3.面试注意:乐于分享;积极学习;可以傲但人品要好;不是一个利益选手

PS:其实最重要的还是社长。社长肩负压力和责任,不一定技术能力最强,但是一定要有一颗为大家着想的心。

在线CTF练习

  • 攻防世界 -- 目前发现的最适合CTF新人入门且免费的平台,强烈推荐,优先把这上面的题刷完。
  • i春秋CTF -- 虽然最近没怎么更新题库,但有不少比赛真题可以刷。
  • CTFtime -- 要参与国际赛事建议习惯在这个平台刷题,熟悉英文出题模式,平台上也有很多国际比赛可以参与,部分操作需科学访问。(提高比刷)
  • Bugku旧题库 -- 现在的新题库需要付费,旧题库还是有不少题可以刷刷的。
  • reversing.kr -- 有不少逆向题目,从初级到高级
  • Hack The Box -- 这个不是专业CTF靶机,倒是考OSCP的用这个练习的比较多,复杂的综合性靶场,推荐练习。

靶机镜像获取

  • Vulhub - 通过 docker-compose 来构建,更新稳定
  • Vulfocus - 从dockerhub上拉取
  • VulApps - 这个挺久没更新了

阅读推荐

CTF常用技巧

熟能生巧,想要快速在比赛中拿到first blood的,熟练的基本操作必不可少。具体可以参考CTF竞赛常用基本解题技巧

企业级攻防演练attacking and defensive

涉及企业内部红蓝攻防演练,网上可收集资料较少,后续补充。详见 攻防演练

开源推荐