CTF
CTF(Capture The Flag)中文一般译作夺旗赛,在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。其大致流程是,参赛团队之间通过进行攻防对抗、程序分析等形式,率先从主办方给出的比赛环境中得到一串具有一定格式的字符串或其他内容,并将其提交给主办方,从而夺得分数。为了方便称呼,我们把这样的内容称之为“Flag”。
CTF起源于1996年DEFCON全球黑客大会,以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式。发展至今,已经成为全球范围网络安全圈流行的竞赛形式,2013年全球举办了超过五十场国际性CTF赛事。而DEFCON作为CTF赛制的发源地,DEFCON CTF也成为了目前全球最高技术水平和影响力的CTF竞赛,类似于CTF赛场中的“世界杯” 。
题目类型
CTF比赛通常包含的题目类型有7种大分类,包括MISC
、PPC
、CRYPTO
、PWN
、REVERSE
、WEB
、STEGA
。
MISC
(Miscellaneous)类型,即安全杂项,题目或涉及流量分析、电子取证、人肉搜索、数据分析等等;PPC
(Professionally Program Coder)类型,即编程类题目,题目涉及到编程算法,相比ACM较为容易;CRYPTO
(Cryptography)类型,即密码学,题目考察各种加解密技术,包括古典加密技术、现代加密技术甚至出题者自创加密技术;PWN
类型,PWN在黑客俚语中代表着攻破、取得权限,多为溢出类题目;(涉及漏洞比较多)REVERSE
类型,即逆向工程,题目涉及到软件逆向、破解技术;(比较偏向于这个)STEGA
(Steganography)类型,即隐写术,题目的Flag会隐藏到图片、音频、视频等各类数据载体中供参赛者获取;WEB
类型,即题目会涉及到常见的Web漏洞,诸如注入、XSS、文件包含、代码执行等漏洞。
而本文主要记录的是近年国内CTF中的RE(逆向)类题目,或者一些自己觉得有意思的[[CrackME]](https://www.52pojie.cn/thread-709699-1-1.html)
。国内知名CTF大赛和相关资料
推荐书籍
比较基础:
《CTF安全竞赛入门》
《极限黑客攻防:CTF赛题揭秘(博文视点出品)》
比较实战:
《从0到1:CTFer成长之路(精装版)》
《CTF特训营:技术详解、解题方法与竞赛技巧》
线上资源与赛题解析地址CTFTime
国内网的CTF比赛信息【★比较大】网鼎杯
网鼎杯”网络安全大赛2018年在北京举办了第一届,共吸引了全国7000支队伍、2.25万人参赛,是我国迄今为止规模最大、覆盖面最广的一次高水平网络安全大赛,这对于进一步磨砺网络安全攻防能力,发现网络安全专门人才,提升全社会网络安全意识具有重要意义。
啊这,两万多人,就算凑数都能凑这么多人吗😅😅😅
比较有趣的是,根据行业分组。
- 青龙:高等院校、职业院校、社会参赛队伍
- 白虎:通信、交通、国防、政务部门等单位
- 朱雀:能源、金融、政法、其他行业单位
- 玄武:科研机构、科技企业、互联网企业、网安企业等单位
XCTF
XCTF联赛是由清华大学蓝莲花战队发起组织,网络空间安全人才基金和国家创新与发展战略研究会联合主办,赛宁网安总体承办,由高校、科研院所、安全企业、社会团体等共同组织,由业界知名企业赞助与支持,面向高校及科研院所学生、企业技术人员、网络安全技术爱好者等群体,旨在发现和培养网络安全技术人才的竞赛活动。
强网杯
湖湘杯
看雪
KCTF-2019
KCTF-2020
KCTF-2021
看雪论坛CTF区
吾爱破解
工具和知识
基础知识
【👍推荐👍】【绿盟大讲堂】CTF夺旗赛最强秘籍PART1:密码学和隐写术
【👍推荐👍】【绿盟大讲堂】CTF夺旗赛最强秘籍PART2:WEB
CTF之加解密总结
CTF中常见的加解密(经典)
CTF密码学常见加解密总结
文件判断和文件头
拿到文件先要判断文件类型,需要查文件头
文件头
工具
【在线】编码 / 算法 / 杂项
CTF Tools
awesome-ctf
在线编译-菜鸟
BerylEnigma - 渗透测试和CTF工具集(主要实现一些加解密的功能,By三个大石头)
文本查看
推荐使用010Editor进行查看文件头或者文件内容。除此之外平常也很好用,比如搜索方式支持多种格式:
反编译
- IDA(7.5),如果遇到送分题,直接拖到IDA里Shift+F12就看到Flag啦
- IDA Pro 7.6:IDA Pro 7.6 KeyGen By CZC、IDA 7.6 SP1
Linux平台(PWN题目比较多)
题目
CTF PWN题目
XCFT题库 - RE
推荐书籍
《CTF竞赛权威指南(Pwn篇)(博文视点出品)》基本知识点扫盲
《手把手教你栈溢出从入门到放弃(上)》:栈溢出的原理和两种执行方法,两种方法都是通过覆盖返回地址来执行输入的指令片段(shellcode)或者动态库中的函数(return2libc)。
《手把手教你栈溢出从入门到放弃(下)》:另外两种实现方法。一种是覆盖返回地址来执行内存内已有的代码片段(ROP),另一种是将某个函数的地址替换成另一个函数的地址(hijack GOT)。
《【英文】Linux下漏洞利用方法》
- Basic Vulnerabilities / 基本脆弱性
Bypassing Exploit Mitigation Techniques / 绕过开发缓解技术
Heap Vulnerabilities / 堆漏洞
- Heap Overflow Using Unlink / 使用取消链接的堆溢出
- Heap Overflow Using Malloc Maleficarum / 使用Malloc Maleficarum的堆溢出
-
图片
0x001:图片隐写之png高度隐藏+复合图片 0x002:图片隐写之jpg高度隐藏 0x003:图片隐写之pngcheck+隐藏二维码 0x004:图片隐写之gif修复+exiftool 0x005:图片隐写之双图对比+RGB通道隐写 0x006:gif文件头修复+identify每帧鉴别 0x007:文件头尾Hex逆序
C/C++语言题目
Python
Pyc文件
Python反编译
好像Python题中, 数据处理的偏多,考察点偏向于数据处理相关?进制转换和字符操作?