CTF从大一打到大三,主要是做pwn,偶尔做逆向和密码学,现在看著层出不穷的套路题/模板题真的有些腻了,想问问CTF PWN选手都是如何转型呢?

其实很想去挖洞,但是感觉CTF中的二进位和真实的漏洞挖掘+利用还是存在著断层的。比如复现漏洞时,拿到一个PoC可以相对快速地写出exp,漏洞利用的问题并不大,但是漏洞挖掘却依然是未知,会有「究竟是怎么发现这儿这个漏洞的」这种问题


相比起web,pwn选手从CTF走向实战需要付出更多的努力。

举个简单的例子,如果把src作为web领域的真实战场,那么能解决主流web题目的选手,只要肯花时间,大概率能冲到src积分榜比较靠前的位置。或者这么说,如果把市场上高价值的web漏洞exp交给web选手看,复现起来应该不费什么力气。但是pwn领域呢,要是把顶级实战比赛pwn2own上的exp交给CTF选手,想必光是理解漏洞都要花上不少时间。

究其原因可以从两方面简单谈谈:

  1. 代码量。想想一般CTF给出题目的文件大小,最大也不过几十mb,而真实漏洞挖掘的场景呢,光是下载chrome的源码可能都得花几十分钟。也就是说比赛题目和真实项目的代码量往往差了几个数量级。
  2. 方法论。pwn的模板题菜单题漏洞种类来来去去就那几种,方法无非就是IDA简单逆向套一下漏洞模式。而真实场景的漏洞可就复杂很多,常常就是涉及几个模块调用的。

所以要从CTF过渡到真实场景就可以从上面两个方向入手,加强对代码审计的练习(阅读代码的技巧),学习漏洞挖掘的方法论(fuzzing等)。这里推荐 @泉哥 介绍的一个talk,演讲者是我个人非常欣赏的男神级Project zero研究员Ned Williamson。英文好的建议看原视频,或者直接看泉哥的解读也可以,总结的非常到位。

泉哥:安全研究者的自我修养?

zhuanlan.zhihu.com图标


我将你的问题抛到了我们十五派的教研组群里,老师们也都给出了建议,咱们十五派的部分学生也会遇到这个问题,我对此做个简单的总结,希望对你能有所帮助:

  1. 你需要搞清楚自己的基础知识掌握的如何了,例如:最起码的,挖掘PDF漏洞是不是至少要对PDF文件格式有比较深入的了解,基础知识不具备,直接想上手挖洞,这是断层感的主要来源之一,大概占一半以上;
  2. 漏洞挖掘与漏洞利用其实是两个知识体系,漏洞挖掘主要更偏向于软体测试,主要关注代码覆盖度、过程状态与深度以及可重现性等技术问题,而且,针对不同的类型的业务场景(例如本地文件类型、文档类型、网路通信类型等)都有不同的技术侧重点,关于这些咱们十五派的最新版课程中有一些涉及,因此对此也算是感触颇深;
  3. 相对比漏洞利用的栈溢出、堆溢出、以及绕过各种保护的技术手段例如堆喷射、ROP等,漏洞挖掘也是有很多独立的技术是需要学习的,并且所涉及到的知识结构更倾向于软体架构与调试异常等,当然,基本的漏洞利用基础也是需要的。

总而言之,漏洞挖掘相对比漏洞利用,更多的其实是在干一件「找参数并调优参数」的活,你要挖掘漏洞的程序其实就是一个公式,他有自己的特点,而你在做漏洞挖掘的时候,其实就是在找这个公式中的各项参数,并且经过调整后,使得公式有更大的概率输出你所想要的结果。

由此可见,高等数学、微积分、统计学啥的可能就要走上台面了,而说实在的,漏洞利用的过程中是涉及不到这些基础的。

发布于 02-09继续浏览内容知乎发现更大的世界打开Chrome继续科锐逆向科锐逆向

谢邀@啸上

谢邀。

如果已经是一个成熟的PWN选手,那么逆向分析、shellcode代码的编写、常见跳板和越权的构建应该都不是问题了。

但是PWN本质上还是个比赛性质,主要考察大家分析定位并利用漏洞的能力,好的比赛里面会将历史上曾经真实出现过的漏洞改造后,更换成同类型的脑洞跳板供选手们体验。

如果想更进一步,可以先分析研究厂商公开的安全升级,然后对比升级前后的文件,找到厂商修复代码的位置并分析其用意,从而定位并尝试写出旧版本的shellcode。不过一般厂商对于安全升级不会让你轻易地作比较并定位的,你得熟悉一些常用的挖掘工具,这里就不帮你百度了。

然而在传统的黑客文化里,能够独立发现一个未公开的漏洞,并写出利用代码,最后提出修复方案,这才是被传统黑客圈敬重的行为。这时候,你的平时工作如果就是漏洞挖掘,那你必须熟悉各种fuzz手法和工具的使用,有时候还得自己写复杂的fuzz脚本,甚至fuzz工具。就算这样,也不是一份耕耘一份收获,更不是按劳分配的事情。毕竟就算你很努力地寻找漏洞,还得目标厂商的开发人员不够努力,以至于写出漏洞代码,你才能有机会找到,大家说是不。

所以还需要运气,没准一个不是做漏洞挖掘行当的小弟,平时写个二次开发的程序,一不小心把SDK里的功能调崩了一个。如果这小弟知识结构到位,而且对漏洞敏感,再然后项目时间允许他当即开始展开漏洞方面的研究,OK,那就是缘分,施主与洞有缘,否则,施主与洞无缘,事情就这么过去了,也是很常见的。


谢邀。

如果已经是一个成熟的PWN选手,那么逆向分析、shellcode代码的编写、常见跳板和越权的构建应该都不是问题了。

但是PWN本质上还是个比赛性质,主要考察大家分析定位并利用漏洞的能力,好的比赛里面会将历史上曾经真实出现过的漏洞改造后,更换成同类型的脑洞跳板供选手们体验。

如果想更进一步,可以先分析研究厂商公开的安全升级,然后对比升级前后的文件,找到厂商修复代码的位置并分析其用意,从而定位并尝试写出旧版本的shellcode。不过一般厂商对于安全升级不会让你轻易地作比较并定位的,你得熟悉一些常用的挖掘工具,这里就不帮你百度了。

然而在传统的黑客文化里,能够独立发现一个未公开的漏洞,并写出利用代码,最后提出修复方案,这才是被传统黑客圈敬重的行为。这时候,你的平时工作如果就是漏洞挖掘,那你必须熟悉各种fuzz手法和工具的使用,有时候还得自己写复杂的fuzz脚本,甚至fuzz工具。就算这样,也不是一份耕耘一份收获,更不是按劳分配的事情。毕竟就算你很努力地寻找漏洞,还得目标厂商的开发人员不够努力,以至于写出漏洞代码,你才能有机会找到,大家说是不。

所以还需要运气,没准一个不是做漏洞挖掘行当的小弟,平时写个二次开发的程序,一不小心把SDK里的功能调崩了一个。如果这小弟知识结构到位,而且对漏洞敏感,再然后项目时间允许他当即开始展开漏洞方面的研究,OK,那就是缘分,施主与洞有缘,否则,施主与洞无缘,事情就这么过去了,也是很常见的。


长亭的研究员巨佬就不要装弱了,随便挖挖bounty就拿到手软了,而我这种零产出菜鸡只能瑟瑟发抖


做等后续,目前也有这方面的烦恼,工作也不好找


谢邀,可我是个web手


推荐阅读:
相关文章