CTF学习笔记【一】

CTF学习笔记【一】

【引言】

早在高中的时候听说过 CTF ,也认识几个打 CTF 的网友,自己也去打过 Kali 论坛坛主的第二期 CTF 比赛,在这些过程中逐渐意识到了学好基础知识很重要,另外鉴于本次要参加网鼎杯的比赛,故我特开 CTF 系列文章来记录学习它的过程,它的坑以及关于它的一些思考。

【什么是CTF?】

CTF ( Capture The Flag ) 即夺旗赛,它起源于 1996 年的 DEFCON 全球黑客大会,是网络安全爱好者之间的竞技游戏。其本意是西方的一种传统运动,在比赛上两军会互相争夺旗帜,当有一方的旗帜已被敌军夺取,就代表了那一方的战败在信息安全领域的 CTF 是说,通过各种攻击手法,获取服务器权限后寻找指定的字段,或者文件中某一个固定格式的字段,这个字段叫做 flag ,其形式一般为 flag{xxxxxxxx,提交到裁判机就可以得分。

CTF 竞赛涉及众多领域,内容繁杂。与此同时,安全技术的发展速度越来越快,CTF 的题目的难度越来越高,对我这类弱鸡来说苦不堪言。老师给我们提供的资料就是 wechall ,microcorruption smashthestack,但我认为在刷题这是不合适的,不能一上来就刷题,应该先写好基础再去刷题,否则事倍工半。

此次的网鼎杯的介绍题目类型大概是:1. web 类型;2. reverse 逆向类型;3.杂项类型;4.密码学;5. pwn 类型。

【CTF的历史】

CTF 的起源:

CTF 的前身是传统黑客之间的网络技术比拼游戏,起源于 1996 年第四届 DEFCON 。

早期的 CTF 竞赛:

早期的 CTF 比赛( 1996 年 - 2001 年)是没有明确的比赛规则的,赛事主办方没有搭建专业的平台和环境,是由参赛队伍各自准备比赛目标( 自行准备与防守比赛目标,并且要尝试攻破对方的比赛目标 ),而这些组织者大都只是些非专业的志愿者,接受参赛队伍手工计分的请求。

他们没有后台自动系统的管理和裁判技术能力的专业能力认定,计分延迟和误差以及不可靠的网络和不正确的配置,所以常有人抱怨以及不满这种情况。

现代 CTF 竞赛:

由专业队伍承担比赛平台、命题、赛事组织以及自动化积分系统。参赛队伍需提交参赛申请,由 DEFCON 会议组织者们进行评选。

就 LegitBS 组织的三年 DEFCON CTF 比赛而言,有以下突出特点:

1.比赛侧重于对计算机底层和系统安全的核心能力,Web 漏洞攻防技巧完全被忽略。

2.竞赛环境趋向多 CPU 指令架构集,多操作系统,多编程语言。

3.采用「零和」计分规则。

4.团队综合能力考验:逆向分析、漏洞挖掘、漏洞利用、漏洞修补加固、网络流量分析、系统安全运行维护以及安全方面的编程调试。

【CTF竞赛模式】

解题模式( Jeopardy )

解题模式(Jeopardy)常见于线上选拔比赛。在解题模式 CTF 赛制中,参赛队伍可以通过互联网或者现场网络参与,参数队伍通过与在线环境交互或文件离线分析,解决网络安全技术挑战获取相应分值,类似于 ACM 编程竞赛、信息学奥林匹克赛,根据总分和时间来进行排名。

不同的是这个解题模式一般会设置 一血 、 二血 、 三血 ,也即最先完成的前三支队伍会获得额外分值,所以这不仅是对首先解出题目的队伍的分值鼓励,也是一种团队能力的间接体现。

当然还有一种流行的计分规则是设置每道题目的初始分数后,根据该题的成功解答队伍数,来逐渐降低该题的分值,也就是说如果解答这道题的人数越多,那么这道题的分值就越低。最后会下降到一个保底分值后便不再下降。

题目类型主要包含 Web 网络攻防 、 RE 逆向工程 、 Pwn 二进制漏洞利用 、 Crypto 密码攻击 、 Mobile 移动安全 以及 Misc 安全杂项 这六个类别。

战争分享模式( Belluminar )

在 2016 年世界黑客大师挑战赛(WCTF)国内首次引入韩国 POC SECURITY 团队开创的 BELLUMINAR CTF (战争与分享)赛制,从此中国国内陆陆续续也有开始 BELLUMINAR 模式的比赛,目前采取这一赛制的有 2016 年诸葛建伟老师集合的 XMan 夏令营分享赛以及同年 9 月的「百度杯」CTF 比赛。

同时这里也有 BELLUMINAR 赛制的介绍官网: http://belluminar.org

攻防模式( Attack & Defense )

攻防模式常见于线下决赛。在攻防模式中,初始时刻,所有参赛队伍拥有相同的系统环境(包含若干服务,可能位于不同的机器上),常称为 gamebox,参赛队伍挖掘网络服务漏洞并攻击对手服务获取 flag 来得分,修补自身服务漏洞进行防御从而防止扣分(一般来说防御只能避免丢分,当然有的比赛在防御上可以得分)。

攻防模式可以实时通过得分反映出比赛情况,最终也以得分直接分出胜负,是一种竞争激烈,具有很强观赏性和高度透明性的网络安全赛制。在这种赛制中,不仅仅是比参赛队员的智力和技术,也比体力(因为比赛一般都会持续 48 小时),同时也比团队之间的分工配合与合作。

一般比赛的具体环境会在开赛前一天或者当天开赛前半小时由比赛主办方给出(是一份几页的小文档)。在这一段时间内,你需要根据主办方提供的文档熟悉环境并做好防御。

在比赛开始前半小时,这半小时内是无法进行攻击的,各支队伍都会加紧熟悉比赛网络环境,并做好防御准备。至于敌方 Gamebox 的 IP 地址,则需要靠你自己在给出网段中发现。

如果是分为上午下午两场攻防赛的话,那么上午和下午的 Gamebox 漏洞服务会更换(避免比赛中途休息时选手交流),但管理时要用的 IP 地址什么的不会改变。也就是 下午会换新题 。

一般情况下,主办方会提供网线,但并不会提供网线转接口,所以需要自备。

【比赛内容】

由于 CTF 的考题范围比较广 , 所以我先学习这几种常见的类型:

1. Web 网络攻防

它主要包括 Web 安全中常见的漏洞,如SQL注入、XSS、CSRF、文件包含、文件上传、代码审计、PHP弱类型等。

2. Reverse Engineering 逆向工程

主要介绍了逆向工程中常见的题型、工具平台、解题思路,进阶部分 介绍了逆向工程中常见的软件保护、反编译、反调试、加壳脱壳技术。

3. Pwn 二进制漏洞利用

Pwn 题目主要考察二进制漏洞的发掘和利用,需要对计算机操作系统底层有一定的了解。在 CTF 竞赛中,PWN 题目主要出现在 Linux 平台上。

4. Crypto 密码攻击

主要包括古典密码学和现代密码学两部分内容,古典密码学趣味性强,种类繁多,现代密码学安全性高,对算法理解的要求较高。

5. Mobile 移动安全

主要介绍了安卓逆向中的常用工具和主要问题类型,安卓逆向常常需要一定的安卓开发知识,iOS 逆向题目在 CTF 竞赛中较少出现,因此不作过多介绍。

6. Misc 安全杂项

以诸葛建伟翻译的《线上幽灵:世界头号黑客米特尼克自传》和一些典型 MISC 题为切入点,内容主要包括信息搜集、编码分析、取证分析、隐写分析等。

全国大学生信息安全竞赛 - 竞赛内容 

2016 年全国大学生信息安全竞赛开始举办创新实践技能赛,采取的就是传统的 CTF 赛制。在《2016 年全国大学生信息安全竞赛参赛指南》中主办方给出的竞赛内容相对全面,值得参考。

1.系统安全。涉及操作系统和 Web 系统安全,包括 Web 网站多种语言源代码审计分析(特别是 PHP)、数据库管理和 SQL 操作、Web 漏洞挖掘和利用(如 SQL 注入和 XSS)、服务器提权、编写代码补丁并修复网站漏洞等安全技能。

2.软件逆向。涉及 Windows/Linux/Android 平台的多种编程技术,要求利用常用工具对源代码及二进制文件进行逆向分析,掌握 Android 移动应用 APK 文件的逆向分析,掌握加解密、内核编程、算法、反调试和代码混淆技术。

3.漏洞挖掘和利用。掌握 C/C++/Python/PHP/Java/Ruby / 汇编 等语言,挖掘 Windows/Linux(x86/x86_64 平台)二进制程序漏洞,掌握缓冲区溢出和格式化字符串攻击,编写并利用 shellcode。

4.密码学原理及应用。掌握古典密码学和现代密码学,分析密码算法和协议,计算密钥和进行加解密操作。

5.其他内容。包括信息搜集能力,编程能力、移动安全、云端计算安全、可信计算、自主可控、隐写术和信息隐藏、计算机取证(Forensics)技术和文件恢复技能,计算机网络基础以及对网络流量的分析能力。


回复列表



回复操作

正在加载验证码......

请先拖动验证码到相应位置

发布时间:2020-04-27 01:47:41

修改时间:2020-04-27 01:47:41

查看次数:57

评论次数:0