[译]如何开始CTF

[译]如何开始CTF


Steve Vittitoe 发表于 2014.6.9

译者:wnng

英语水平很差,翻译纯粹是为了兴趣和练习英语。

如果我的翻译能帮到您,那真是太好了。

有不好的地方希望大佬们可以帮我指出来,多谢!

原文地址:How to Get Started in CTF

参考资料:CTF Wiki


原文:

在过去的两周里,我分析了第22届DEFCON大赛里的两道题:“shitsco”“nonameyet”,感谢每一条的评论和提问,其中被提过最多的问题是“如何开始CTF?”。不久前,我也问过自己同样的问题。最简单的方法就是注册一个CTF平台,比如CSAWPico CTFMicrocorruption或者其他在此页内的网站。通过练习、耐心和奉献,你的能力就会一天天提高。

如果你平时想做一些题目,这里存了大多数比赛的题目。这些题目通常会有许多不同级别,对于最简单难度的题目也不能大意,难不难取决于你的技术。比如你擅长取证分析(forensics)题但是对密码攻击(crypto)题不太熟,那么你可能取证分析题得到分数很多而密码攻击题得到的分很少。对于CTF出题者来说各自也有擅长的领域,这也是难以评定CTF难度的原因之一。

如果你已经自己尝试过简单的题目并且还在努力着,那么你很有可能自学成功。CTF竞赛通常注重一下技能:逆向工程(reverse engineering)、密码攻击(cryptography)、类ACM编程题(ACM style programming)、Web网络攻防(web vulnerabilities)、二进制漏洞(binary exercises)和网络/取证分析(networking and forensics)。选择其中一个方向作为学习CTF的开始。

1) 逆向工程(reverse engineering)。我强烈建议你下载 IDA Pro,有免费版本和学生折扣。尝试做一些CrackMe练习,写一些C语言程序再反编译,改变编译选项和程序逻辑再反复反编译。C代码中的“if”语句和编译后二进制程序中“select”有和不同?我建议你先从x86、x86_64和ARM三个架构的处理器选择一个学习,阅读这种架构处理器的手册。书籍推荐:

2) 密码攻击(cryptography)。虽然密码攻击并不是我擅长的,但是我可以提供一些书籍:

3) 类ACM编程题(ACM style programming)。选择一门高级语言,我推荐Python或者Ruby。对于Python,可以阅读Dive into Python(免费),并且找一个小项目来练习。对于Puby,值得一提的是Metasploit就是用Ruby写的。算法和数据结构这些计算机学科课程也发挥着巨大的作用。做做CTF和其他比赛的以前编程题。应该注重于找到可行解决方案,而不是以最快或者最优雅的方式解决,尤其是在学习之初。

4) Web网络攻防(web vulnerabilities)。Web编程技术有很多中,其中在CTF比赛中最受欢迎的是PHP和SQL。php.net是一个很好的参考网站,去搜索任何你感兴趣的函数吧。除了PHP之外最常见的Web题是Python和Ruby脚本,发现了考查能力的重叠了吗?有一本关于Web网络攻防的好书:黑客攻防技术宝典:Web实战篇(The Web Application Hacker’s Handbook)。除此之外,在掌握了一些基础技能之后,你也可以考虑去学习一些比较流行的免费工具,这些工具在CTF比赛中偶尔也有用。根据我的经验,这类题常常和密码攻击(cryptography)重叠。

5) 二进制漏洞(binary exercises)。这是我最喜欢的部分,我建议你在学习二进制漏洞之前先学习逆向工程(reverse engineering)。你可以单独学习一些常见了漏洞类型作为学习的开始:栈溢出(stackoverflows)堆溢出(heap overflows)格式化字符串漏洞(format string bugs)。其中很多都是训练你找出脆弱代码段的能力,查看过去的漏洞也是帮助你找出脆弱代码段的好办法。你还应该通读:

6) 网络/取证分析(networking and forensics)。很多CTF团队都有专门负责这部分的成员,我不负责这一块,但我可以建议你去学习使用010 hex editor,并且不要怕自己对这类问题的猜想有多荒谬。

最后,Dan Guido和他的团队最近推出了CTF field guide平台,对CTF这几个点的介绍很精彩。

猜你喜欢

转载自www.cnblogs.com/wngg/p/10886912.html
ctf