CTF:从0到1 -> zero2one
- 本篇blog首发0xffff论坛(CTF:从0到1->zero2one - 0xFFFF),中间有各位大佬补充,搬到了个人博客CTF:从0到1 -> zero2one | c10udlnk_Log这里,在博客园这边也放一下hahah。是一点CTF的入门心得吧,希望能给想玩CTF的小朋友们一点帮助。
- 起文章名的时候没想太多光想着把to->2用上去,撞名都是我的锅(捂头
- 这里还只是个划水摸鱼的萌新,有什么写错的地方烦请大佬们多多补充谢谢0v0
0x01 关于CTF
Ⅰ. 一点简介
CTF(Capture The Flag,夺旗赛),就是通过程序分析、攻防对抗等形式,从比赛平台的题目中得到一串具有一定格式的字符串(被称为flag)或其他内容,并将其提交到平台上以夺得分数。
Ⅱ. 亿点简介
详细简介这东西,前人有简介的话当然引用前人的了(捂头跑路)。感觉目前来说看到最完整的介绍要数CTFHub里的了 (要不是因为要去拿彩蛋的flag估计我也不会看到这些介绍hhh) 。
CTF简介:CTF简介 | CTFHub
关于CTF的竞赛模式:竞赛模式 | CTFHub
关于CTF的比赛形式:比赛形式 | CTFHub
关于CTF的题目类型:题目类型 | CTFHub
0x02 从入门到...
Ⅰ. 新手教程
1)选择一个主攻方向
在读完上面的亿点简介(尤其是题目类型)以后,可以试图寻找自己对哪个方向更感兴趣(web,reverse/逆向,pwn/二进制,crypto/密码学)。为什么不选misc呢?因为杂项实在是太杂,建议团队三个人都或多或少地刷一下,华师CTF新生赛里杂项类是为数不多能做出来的题目了(捂头跑)。
我的话目前是个摸鱼的逆向手,所以对逆向方面比较熟悉(吧,打算往pwn方向延伸。
关于web方向的入门感谢@fxizenta 大佬补充【把大佬回复贴回来,原回复指路帖子6L】
隔壁的摸鱼web来补充一下web入门
0x00 入门建议
web方向应该算是比较难入门的方向(尤其对于无基础的萌新),完全无基础的同学建议从w3school开始吧,期间也可以做一些简单的题(题库上面的dalao说的都挺不错的),学习web方向如果没有学习过前端、协议、命令行等基础的知识的话,在前期是挺任意有错败感的,这里建议在做题中思考了很长时间发现完全没有思路,建议可以直接去看write up,在从wp中学习dalao们的思路,很重要的一点是,在wp中有什么发现自己不明白的,建议善用搜索引擎,把题目的思路了解清楚。
0x01 web常用工具
1. Burp Suite
web题常用工具,功能十分强大,常用于用于抓包、发包、爆破,可以在官网下载到社区版
bp的配置和简单功能解释:https://blog.csdn.net/u011723630/article/details/80315507
2. kali
Kali 是一个基于 Debian 的 Linux 发行版。它的目标就是为了简单:在一个实用的工具包里尽可能多的包含渗透和审计工具。Kali 实现了这个目标。大多数做安全测试的开源工具都被囊括在内。
kali下载: https://www.kali.org/downloads/
3. sqlmap
用于sql注入,功能十分强大包含了盲注,布尔注入,cookie注入等等常见注入方式的扫描和利用,还可以自己定制绕过方法,绕过黑白名单限制。下载github上可以找到
4. dirsearch
用于站点扫描,包括扫秒常见的.git,.svn,.apk等备份文件,以及域名下的子目录(不过有个缺点是他只扫描常见的命名规则下的子目录名,所以还是有一定的局限性)。下载github上有
5. hackbar
一个浏览器插件,虽然他的功能bp都有,但是对比起bp他有一个巨大优势就是方便(老懒狗了),f12就可以开始使用,提供post和简单编码解码的功能。在Chrome和Firefox的插件商城都可以找到。ps:访问Chrome插件商城需要魔法(狗头)
0x02 学习推荐
1. ctfwiki
据说每一位ctf选手都是从这里开始的,不止web选手哦,其他方向的选手也可以去看看
https://github.com/ctf-wiki/ctf-wiki
https://wiki.x10sec.org/
2. 打好基础
无基础直接莽上来的话,你可能会完全一头雾水,如果是完全没有基础的同学建议先学C/C++,一起还是从先学会一个编程语言的基础使用开始吧,然后就可以开始学会一个脚本语言(如python),学习php(至少要看得懂),还可以看看端口知识,传输协议知识等等,最重要的一点,要变做题边学习,如果单单把重心放在flag,而不是做题的学习过程,那么你会失去很多,也会失去打ctf最珍贵的东西。
最后附上最近刚刚结束的Tencent CTF中的奖励于你我共勉吧
对几个方向的一点点理解是:
-
感觉 web 相当于前端的杂项,听说web包括的方面很多很杂,做起来令人头大(想问具体的就去敲web手吧[甩锅])。
-
逆向 上我感觉算是比较简单也比较累的一个方向,入门的话只要能读得懂C/C++源代码就完全ojbk,后期可能需要人肉反汇编&反编译,
做题的时候十分需要感受宁静hhhh。 -
pwn 则是简单逆向+漏洞利用,入门可能比较难(?
但是新生赛里说不定就有输入十六个b就能出flag的究极简单题[手动狗头]),毕竟需要在读懂程序逻辑(一般这里的程序逻辑没逆向那么难)以后,发现能利用的漏洞(比如堆栈溢出/重复free等),如果对计算机内部处理比较感兴趣的同学可以试试? -
密码学 感觉是万物归宗(x),后期无论做什么题都有可能遇到密码学(比如上次ciscn逆向到最后是一道TEA解密的问题),very需要数论基础。
组队的时候,可以先组人再分方向,也可以通过方向来选人,最理想的状态是三人方向不同,优势互补。
2)边练边学,刷题入门
CTF比赛过程中跟其他比赛最大的不同点就是能在互联网查找资料,赛后还(或许)能搜到一些题目的wp(即write up,类似于答案解析)。
如果已经发现了自己感兴趣的方向,那必然是极好的,接下来就可以在一些刷题网站(如CTFHub、攻防世界、Bugku CTF等,在0x03中会有详细介绍)中,选择该方向的题目进行练习。刚开始的时候,或许还不懂面对题目应该做什么,那么可以选择在网上找这道题目的wp(如这道题目在攻防世界上,名为easyre,那么可以搜索“攻防世界 easyre”,就能看到它的解题思路)。
当然,如果没有找到方向也不用担心,可以各个方向的题都试试跟着wp做一下,或许能在做题的过程中发现兴趣点呢hhh。
初学者可以直接跟着wp复现得到flag,但跟着做的过程中也要学到做题的思路和思考方向。 在学了一些题目以后,就可以尝试自己做一些题啦,能做出就成就感up,没做出就继续看wp o( ̄▽ ̄)ブ。当然,也不是每道题都有wp,但不用担心,这些网站在新手区放的经典题基本上都会有wp的。
CTF的学习过程其实更像是积累经验的过程,在做每一道题、打每一场比赛的赛中和赛后能学到新的知识点,也能知道自己在什么方面有所不足、哪些点因为粗心忽略掉了。
同时,也别忘了很重要的 “自造轮子” ,CTF是用自己的电脑进行比赛的,也就是说会很依赖本地的库和脚本。万一碰到不能去互联网查资料的?%@比赛(真的存在XD),就意味着你需要用本地脚本进行某个密码算法(比如TEA)的解密,如果没有本地轮子就只能现打了,还是很费时间的orz。
(p.s. 在找不到在线解密的网站时,有本地的解密代码也很方便)
比赛入门强推:华师CTF新生赛
Ⅱ. 必先利其器
无论哪个方向,写脚本用的语言建议首选Python。(Python是世界上最好的语言!!)
Reverse:
- IDA pro(yyds!反汇编+反编译必备;ida使用小技巧:IDA Pro7.0使用技巧总结)
- Ollydbg(简称OD,一个动态调试工具)
- WinHex或者010 editor(读||复制粘贴十六进制机器码的工具)
- Ghidra(一个支持反编译mips64的工具)
- PEiD或者ExEinfo PE(查壳工具)
- uncompyle6(.pyc反编译为.py的工具;)
- pintool(二进制插桩找输入;Pintool或者PinCTF;
有坑,目前还没折腾出来orz 有成功的小伙伴拍我一下谢谢!2020.11 update:装上了!才发现有坑是因为没有升级wsl的问题(捂头。整理于=>【从无到有】Pintool安装&使用) - angr(超强的符号执行引擎,vm题利器(x);项目地址:angr,例题:angr-doc,题库:angr_ctf,对于这个题库自己写了个angr_ctf刷题小记,非题解)
- unicorn(CPU仿真器框架,提供hook;项目地址:unicorn-engine)
- ...(想到什么再补好了XD
Pwn:
- pwntools(pwn必备;中文文档)
- gdb(动态调试;插件控制)
- ...
简单加解密?(misc):
- CTF在线工具
- SSL在线工具
- Brainf**k/Ook解密
- CTFCrackTools
- ctftools
别的方向暂时还无,建议搜索引擎走起QvQ
0x03 安利一些前人的肩膀
Ⅰ. 一些书
【读过给“o”标志,简单说一下读后感;未读过给“x”标志,简介从网络上搬过来,仅供参考。】
-
《CTF特训营:技术详解、解题方法与竞赛技巧》【o】【全方向】
这本书里包括Web、Reverse、PWN、Crypto、APK、IoT六个部分,据说是面向初学者的一本书。但是从阅读体验来看,感觉不太适合一点都没接触过CTF的小白(连一道题都没做过的这种),至少在看到的逆向和pwn部分是这样。
不过,它虽然没有手把手带你入门的详细步骤,但有的是干货max。如果读者是做过一点题的咸鱼选手(比如我),就会感觉学到了超多,里面介绍和总结了很多实用的技巧和某一部分的详细题型。很多方法就是提一嘴,让你知道有这个东西,但具体该怎么用、用的时候该注意什么,就得自己去领悟了。
总结:感觉本书适合 跟着wp做了一些题目并能独立做出几道的初学者 及 想要往别的方向发展的现役选手。
/* 本书勘误表:https://github.com/FlappyPig/CTF_SPECIAL_TRAINING_CAMP */
-
《从0到1:CTFer成长之路》【o】【全方向】
2020.12 update:是NU1L战队出的一本入门书。从读完的逆向part来说,感觉比起上一本而言这个才是real从0到1:页数++++,0是真的0,1也是真的1(目前只能理解到0->0.9的样子,tcl)。
先说从0的部分,很多基础操作都是一步步带着走的,相信零基础也能毫无难度的上手。而且本书还有配套练习的crackme,有点小型wp复现的感觉了。同时干货也有很多,ida部分推荐了一些实用插件+其他还安利了很多挺有用的工具。btw,提一下它的angr起步讲的真的很详细,至少让我get到了几个常用的优化点+认识到了看文档的重要性。
然后是到1的部分,感觉有很多巧妙的高级操作,往上进阶的部分讲了很多(虽然书里说是说“冰山一角”)。至于说到0.9是因为自制pintool那里暂时不太能理解,菜鸡还是先用着别人的开源pintool吧(捂头)
总结:这本书强推给 零基础的小朋友们 (至少逆向是这样的),并且建议在 增强理论学习的同时可以跟着实践一下 ,效果更佳。/* 本书勘误表:https://book.nu1l.com/tasks/#/pages/others/bugs?id */
-
《加密与解密》【o】【Reverse && PWN】
加解密yyds!!绝对是值得反复读的好书=v=
虽然有点厚都是跳着看的hhh,但是打基础真的很棒。
推荐阅读路线(亲测)是基础篇->调试篇(了解学习IDA和OD/WinDbg/...的大致用法)->解密篇(大概看看会出到的密码算法)->脱壳篇&&保护篇(感觉主要是脱壳和反调试)->PE部分(走基础)->剩下没看的。
/* 本书勘误表:https://bbs.pediy.com/thread-247429.htm */
-
《逆向工程权威指南(RE4B)》【x】【Reverse】
【本书专注于软件的逆向工程,是写给初学者的一本经典指南。全书共分为12个部分,共102章,涉及X86/X64、ARM/ARM-64、MIPS、Java/JVM等重要话题,堪称是逆向工程技术百科全书。除了详细讲解,本书来给出了很多习题来帮助读者巩固所学的知识,附录部分给出了习题的解答。】
是一本在很多逆向方向入门帖里都会安利的书hhhh
-
《汇编语言》【o】【Reverse && PWN】
这本书我觉得是汇编入门宝典,虽然讲的是16位的古早8086CPU,但是把汇编的机制搞懂了以后,再看看x86/64和8086的区别就可以迅速用到题目里面。(比如vm的反汇编)
我觉得在学习汇编上跟别的语言不同的是,最重要不是语法,而是计算机程序的运行过程、数据存储布局等底层的东西 ,而这本书在这方面讲的很通俗易懂不枯燥,推荐xn。
-
《图解密码技术》【o】【Crypto】
(大致看了一些部分)就是一本很有趣的讲密码学的书!建议从前言看起发现彩蛋√
因为去年刚开学那会是抱着随便了解了解的心态看的,所以可能对里面专业的东西没怎么记得住,为了避免误解我还是搬一段简介吧↓
【本书以图配文的形式,详细讲解了6种最重要的密码技术:对称密码、公钥密码、单向散列函数、消息认证码、数字签名和伪随机数生成器。第一部分讲述了密码技术的历史沿革、对称密码、分组密码模式(包括ECB、CBC、CFB、OFB、CTR)、公钥、混合密码系统。第二部分重点介绍了认证方面的内容,涉及单向散列函数、消息认证码、数字签名、证书等。第三部分讲述了密钥、随机数、PGP、SSL/TLS 以及密码技术在现实生活中的应用。】
-
《白帽子讲web安全》【x】【Web】
【在互联网时代,数据安全与个人隐私受到了前所未有的挑战,各种新奇的攻击技术层出不穷。如何才能更好地保护我们的数据?本书将带你走进Web安全的世界,让你了解Web安全的方方面面。黑客不再变得神秘,攻击技术原来我也可以会,小网站主自己也能找到正确的安全道路。大公司是怎么做安全的,为什么要选择这样的方案呢?你能在本书中找到答案。详细的剖析,让你不仅能“知其然”,更能“知其所以然”。
本书是根据作者若干年实际工作中积累下来的丰富经验而写成的,在解决方案上具有极强的可操作性,深入分析了各种错误的解决方案与误区,对安全工作者有很好的参考价值。安全开发流程与运营的介绍,对同行业的工作具有指导意义。】
给完全没有了解的隔壁web方向推荐一波<(_ _)>
-
CSAPP(深入理解计算机系统) 【o】【Reverse && PWN】
推一个大佬们的学习指南/资源汇总:【CMU-CSAPP】2015 CMU 15-213 CSAPP资源汇总
同样是没有折腾完的一本书(瘫)想对计算机底层方面有更深层次了解的朋友们可以试着阅读一番=v=
Ⅱ. 一些网站
-
华师CTF
是一个宝藏集合网站!不仅仅是一个报名网站(去年),里面的知识清单&训练场也大有乾坤,建议都扫一遍=v=
-
0xFFFF
是一个很多dalao水的论坛!干货很多实名安利!
不只是CTF区,其他的区也有很多好玩的帖子,建议多逛
(潜水玩家捂头跑路)。 -
攻防世界【刷题网站】
这里有一个专门刷题的答题区,准备新生赛的话可以考虑一下把对应方向的新手练习区按上面说的方法刷一遍hhh(其实感觉新手练习区有些题目也是偏难的XD)
而且有些比赛也是在这个平台上举办的,先搞个账号不亏2333。
-
CTFHub【刷题网站】
这个网站其实是一个hub一样的集合类网站,这个技能树看起来包括的方面还挺全的
(就是还没多少题orz 毕竟新站)不过赛事中心&历年真题&工具部分还是挺不错的,想复盘可以去找找题目,需要什么工具可以找找(说不定就找到了
-
看雪【刷题网站?】
打个问号是因为我觉得它还是更偏向于论坛hhh 刷题这块的功能没怎么用过。
论坛还是很不错的,有很多干货&资源分享><
-
吾爱破解
也是个干货&&资源的论坛集合,安利!
-
Bugku CTF【刷题网站】
刷题网站+1,各个方向的题目分类很明确,不过难度好像没按顺序排?杂项题目类型还是挺丰富的,建议安排一下。
不过新生赛以后也没用这个刷过题了= =可能有理解偏差x
-
CTF wiki(https://wiki.x10sec.org/ or https://ctf-wiki.github.io/ctf-wiki/)
经楼下web大佬提醒,补充一个CTF各种基础知识大全的网站!
像逆向方面我觉得题型写得比较全,
看完说不定对新生赛有用(手动狗头 -
0xFFFF CS Wiki - 信息安全
突然发现0xFFFF CS Wiki上有给CTF的介绍和一些网站的集合,mark一下。
(看到pwn部分整理了少而精的链接,试图增加pwn的工具ing
-
CTF All In One
一个CTF相关的百科全书!各个方向的入门基础&题目&工具都挺全的,有时间可以刷一下0v0