写点什么

腾讯三面被问到有没有参加过 CTF? 我反手就是一套军体拳打得面试官哑口无言!

用户头像
Machine Gun
关注
发布于: 2021 年 06 月 15 日


前言:

这是一场紧张的比赛,现场激情解说:

“SP 的战队率先发起攻击,可惜被 K&K 战队以三行代码轻松拦截!”

“哇哦,SP 战队依旧紧追猛打,在几秒之内就找到了对方漏洞所在,极速完胜对手!”

“天哪,SP 战队再次找到 K&K 服务器防御漏洞!”

电视剧为了渲染效果,喜欢把 CTF 搞得跟电子竞技比赛一样,如果你真以为 CTF 比赛就是电视剧中“现男友”展现的这样:



还有这样:



那就大错特错了!CTF 比赛并不是一个电竞项目,真实的 CTF 是这样的:



(图片来源于 XNUCA 比赛现场图)

真正的 CTF 赛事与一般的电竞赛事相比较具有更高的专业性和技术性,CTF 赛事本身具有一定的门槛性。

CTF,它最初的源头是全球黑客大会。这也就是说,参加比赛的选手,不是职业电竞选手,而是真正的职业竞技黑客,他们比拼的是各自作为黑客的技术。

如果说电竞选手是在规定好的框架内比拼技术,而黑客却是能够突破程序限制,自由攻占服务器的游戏制定者。


正文:

什么是 CTF?

CTF(Capture The Flag)中文一般译作夺旗赛,在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。



CTF 起源于 1996 年 DEFCON 全球黑客大会,以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式。发展至今,CTF 已经成为全球范围网络安全圈流行的竞赛形式。而 DEFCON 作为 CTF 赛制的发源地,DEFCON CTF 也成为了目前全球最高技术水平和影响力的 CTF 竞赛,类似于 CTF 赛场中的“世界杯” 。

什么是 PWN?

PWN 在黑客俚语中代表着攻破,获取权限,发音类似“砰”,对黑客而言,这就是成功实施黑客攻击的声音——的一声,被“黑”的电脑或手机就被你操纵了。“PWN”自“own”这个字引申出来,这个词的含意在于,玩家在整个游戏对战中处在胜利的优势,或是说明竞争对手处在完全惨败的情形下。有一个非常著名的国际赛事叫做 Pwn2Own。



在 CTF 比赛中它代表着溢出类的题目,其中常见类型溢出漏洞有整数溢出、栈溢出、堆溢出等。主要考查参赛选手对漏洞的利用能力。所需基础:大学计算机基础、c 语言、汇编语言、操作系统等。

CTF 中的 PWN 题型通常会直接给定一个已经编译好的二进制程序(Windows 下的 EXE 或者 Linux 下的 ELF 文件等),然后参赛选手通过对二进制程序进行逆向分析和调试来找到利用漏洞,并编写利用代码,通过远程代码执行来达到溢出攻击的效果,最终拿到目标机器的 shell 夺取 Flag。


为什么要学 CTF?

1.刺激!成就感爆棚

“惊退万人争战气”“衔得锦标第一归”!当你夺得“一血”拿下比分,完美突破对手的防线,成功抵御“敌人”的进攻,这种来自竞技的魅力让人热血沸腾。如果想感受竞技比赛的刺激、体会技能比拼的成就感和趣味性,CTF 就是一个很好的选择。

2.合理合法的练习环境

随着《网络安全法》的公布,实网安领域刚入门的小白越来越难找到真实、合法的环境来训练自己的技能。CTF 的出现,正好弥补了这个空白,为大家提供了一个合理又合法的练习环境。

3.拓展安全知识面

CTF 的题目一般由多个知识点相互糅合,相对来说目标性比较强。CTF 对网安人员的意义还在于拓展了从业者安全知识面,以及获得通过实战式应用所学到的安全知识。工作中遇到的有些问题可以用 CTF 中涉及的知识解决。

4.奖金丰厚

CTF 赛事的奖金很可观。打 CTF 比赛不仅能挣钱,还能充分展示自己的技术水平,树立个人在网安业界的影响力。



国内部分 CTF 奖金设置(数据来源于网络)

5.名企招聘看重的经历

目前,相关企业招聘普遍看重 CTF 大赛获奖经历,安全名企大厂也经常会通过组织 CTF 竞赛发现人才,收揽人才





下定决心想要学习 CTF,那么要怎么开始呢?


CTF 竞赛模式:

(1)解题模式(Jeopardy)在解题模式 CTF 赛制中,参赛队伍可以通过互联网或者现场网络参与,这种模式的 CTF 竞赛与 ACM 编程竞赛、信息学奥赛比较类似,以解决网络安全技术挑战题目的分值和时间来排名,通常用于在线选拔赛。题目主要包含逆向、漏洞挖掘与利用、Web 渗透、密码、取证、隐写、安全编程等类别。

(2)攻防模式(Attack-Defense)在攻防模式 CTF 赛制中,参赛队伍在网络空间互相进行攻击和防守,挖掘网络服务漏洞并攻击对手服务来得分,修补自身服务漏洞进行防御来避免丢分。攻防模式 CTF 赛制可以实时通过得分反映出比赛情况,最终也以得分直接分出胜负,是一种竞争激烈,具有很强观赏性和高度透明性的网络安全赛制。在这种赛制中,不仅仅是比参赛队员的智力和技术,也比体力(因为比赛一般都会持续 48 小时及以上),同时也比团队之间的分工配合与合作。

(3)混合模式(Mix)结合了解题模式与攻防模式的 CTF 赛制,比如参赛队伍通过解题可以获取一些初始分数,然后通过攻防对抗进行得分增减的零和游戏,最终以得分高低分出胜负。采用混合模式 CTF 赛制的典型代表如 iCTF 国际 CTF 竞赛。


CTF 各大题型简介:

MISC(安全杂项):全称 Miscellaneous。题目涉及流量分析、电子取证、人肉搜索、数据分析、大数据统计等等,覆盖面比较广。我们平时看到的社工类题目;给你一个流量包让你分析的题目;取证分析题目,都属于这类题目。主要考查参赛选手的各种基础综合知识,考察范围比较广。

PPC(编程类):全称 Professionally Program Coder。题目涉及到程序编写、编程算法实现。算法的逆向编写,批量处理等,有时候用编程去处理问题,会方便的多。当然 PPC 相比 ACM 来说,还是较为容易的。至于编程语言嘛,推荐使用 Python 来尝试。这部分主要考察选手的快速编程能力。

CRYPTO(密码学):全称 Cryptography。题目考察各种加解密技术,包括古典加密技术、现代加密技术甚至出题者自创加密技术。实验吧“角斗场”中,这样的题目汇集的最多。这部分主要考查参赛选手密码学相关知识点。

REVERSE(逆向):全称 reverse。题目涉及到软件逆向、破解技术等,要求有较强的反汇编、反编译扎实功底。需要掌握汇编,堆栈、寄存器方面的知识。有好的逻辑思维能力。主要考查参赛选手的逆向分析能力。此类题目也是线下比赛的考察重点。

STEGA(隐写):全称 Steganography。隐写术是我开始接触 CTF 觉得比较神奇的一类,知道这个东西的时候感觉好神奇啊,黑客们真是聪明。题目的 Flag 会隐藏到图片、音频、视频等各类数据载体中供参赛选手获取。载体就是图片、音频、视频等,可能是修改了这些载体来隐藏 flag,也可能将 flag 隐藏在这些载体的二进制空白位置。有时候需要你侦探精神足够的强,才能发现。此类题目主要考查参赛选手的对各种隐写工具、隐写算法的熟悉程度。实验吧“角斗场”的隐写题目在我看来是比较全的,以上说到的都有涵盖。新手盆友们可以去了解下。

PWN(溢出):PWN 在黑客俚语中代表着攻破,取得权限,在 CTF 比赛中它代表着溢出类的题目,其中常见类型溢出漏洞有栈溢出、堆溢出。在 CTF 比赛中,线上比赛会有,但是比例不会太重,进入线下比赛,逆向和溢出则是战队实力的关键。主要考察参数选手漏洞挖掘和利用能力。

WEB(web 类):WEB 应用在今天越来越广泛,也是 CTF 夺旗竞赛中的主要题型,题目涉及到常见的 Web 漏洞,诸如注入、XSS、文件包含、代码审计、上传等漏洞。这些题目都不是简单的注入、上传题目,至少会有一层的安全过滤,需要选手想办法绕过。且 Web 题目是国内比较多也是大家比较喜欢的题目。因为大多数人开始安全都是从 web 日站开始的。



学之前的思考:分析赛题情况

PWN、Reserve 偏重对汇编、逆向的理解

Crypto 偏重对数学、算法的深入学习

Web 编程对技巧沉淀、快速搜索能力的挑战

Misc 则更为复杂,所有与计算机安全挑战有关的都算在其中


常规做法

A 方向:PWN+Reserver+Crypto 随机搭配

B 方向:Web+Misc 组合

其实 Misc 所有人都可以做



CTF 比赛需要的知识储备

前锋攻击(漏洞利用脚本 python)

  • 漏洞利用,成功利用漏洞并突破安全防御机制

  1. 漏洞利用后果:控制劫持流、敏感信息泄露、可用性破坏

  2. 夺取 Flag:控制流劫持并执行 Shellcode,获得 shell(拿到控制台)或读 flag 到 socket

  3. 破坏服务可用性:服务漏洞利用造成服务状态异常 安全防御机制:NX(DEP)、PIE 、ASLP、Stack Canary

  4. 漏洞利用技术:ROP、结合地址泄露漏洞等,/brute forcing、SEH Exploit

掌握二进制代码【木马 shellcode powershell】漏洞利用脚本编写,远程触发漏洞 python pwn toolsweb 的机制 php js html

中场(逆向分析,代码审计)

  • web 漏洞挖掘能力


    代码审计(检查源码,文件包含错误,执行文件错误,文件上传错误,SQL 注入的问题)


    调试环境

  • pwn 漏洞挖掘


    逆向分析(el 文件,读汇编,读伪代码,反着看 c++,java,c)


    Linux 系统知识

后卫(安全运维人员)

  • 服务器安全运维人员


    shell 脚本编写能力


    python 脚本编写能力


    Linux 运维的知识(保证服务器安全,防止木马,分析流量,备份数据库,备份服务器

  • 流量分析能力


    协议分析



CTF 比赛的神器:

前锋

  • kali 系统

  • nmap 端口扫描

  • searchsploit 漏洞查询

  • metaspolit 攻击框架 use exploit/windows/smb/ms17_010_eternalblue

  • sqlmap sql 注入的批量扫描

  • hydra ssh 暴力破解

  • burpsuite sql 注入的批量扫描

  • python 的 pwntools (前锋人员使用,漏洞利用) kail 装 pip install pwntools

中场逆向分析

  • ida pro ----kpathch 插件

  • gdb 以及插件 gef peda-gdb gdbserver (apt-get install gdbserver)

  • notepad++

  • ue winhex

流量分析

  • wireshark

  • pcap python lib

  • 秘密武器

后卫安全运维人员

  • 文件监控武器

  • 权限检索武器

  • 木马查杀武器

  • 批量攻击框架

  • 木马

  • 菜刀(管理 webshell)




恶补基础知识 &信息安全专业知识推荐图书:

A 方向:

RE for Beginners(逆向工程入门)

IDA Pro 权威指南

揭秘家庭路由器 0day 漏洞挖掘技术

自己动手写操作系统

黑客攻防宝典:系统实战篇

B 方向:

Web 应用安全权威指南

Web 前端黑客技术揭秘

黑客秘籍——渗透测试使用指南

黑客攻防宝典 WEB 实战篇

代码审计:企业级 Web 代码安全架构



最后,祝大家早日学有所成,拿到满意 offer,快速升职加薪,走上人生巅峰。

可以的话请给我一个三连支持一下我~~

【资料获取】



用户头像

Machine Gun

关注

还未添加个人签名 2021.03.28 加入

需要获取网络安全/渗透测试学习资料工具的朋友可联系V:machinegunjoe666 免费索取

评论

发布
暂无评论
腾讯三面被问到有没有参加过CTF?我反手就是一套军体拳打得面试官哑口无言!