2b3affcd04570ff2a4b793e674e383d3_b
腾讯安全应急响应中心(TSRC)2013年度据官方说法,拿出百万奖励悬赏帮忙找漏洞的白帽子,而在2013年的上下年度里对于突出贡献的白帽子也分别给了10万到1万的奖励;淘宝在漏洞之后将继续拿出500万奖励漏洞发现者。。。更多的厂商越来越重视安全问题(其实之前携程的事件虽然过热,但也让广大网民了解到漏洞等相关信息,同时也让更多的厂商意识到安全的重要性),越来越多的漏洞应急响应平台(可以见http://www.0xsafe.com),在这些平台上,有些可以拿到现金奖励,还有各种礼物,包含各种数码产品如ipad等等更是不在少数。看着各种白帽子拿到各种奖品、各种现金,对于不懂挖漏洞的同学,是不是眼馋了?是不是也想去挖漏洞了?让我来替大家说句,我也想挖漏洞。

说起来,以我的水平,真不敢教大家怎么挖漏洞,一般我在文章里也不会深入讲一些技术上的问题,今天同样不会深入,主要是大概讲一些理论性的东西和想法。

之前0xsafe交流群里的同学问道“零基础如何学习挖漏洞?”,也提问在知乎上(http://www.zhihu.com/question/23217846)。看了大家的答案,都提到了基础,比如先搞好基础,然后再尝试挖掘,不过比如大牛黑哥跟tombkeeper都提到了一点,分析学习过往的漏洞。

tombkeeper:我是先看漏洞公告,2002年之前绿盟漏洞库中的每一条我都看过,在看的过程中理解漏洞。然后看别人的漏洞分析文档,在看的过程中学习调试和汇编指令。最后学编程。

黑哥:先学语言(code),然后分析以往漏洞,边分析边思考,再尝试挖掘

首先分析下,黑哥跟tombkeeper都是大牛,挖过很多漏洞,所以讲的话是否有道理就不用我说了。除此外,我比较赞同Pnigos的观点,在结合黑哥跟tombkeeper的答案基础上做了详细的解释。

谢邀。国内学习漏洞挖掘习惯先进行所谓的“打基础”,啃各种编程书,然后再去学习漏洞挖掘,这样的问题在于无法控制好学编程的程度,而且先单纯的学习编程也是极其枯燥的,可能很多人无法坚持。下面来说下国外同学一般得学习过程:

既然我们不是要去深造编程技术,而主要为了学习漏洞挖掘。我建议首先先把编程打个底子,底子的概念是:“掌握该语言的基本语法,常用函数,写几个demo即可。”有了底子再去看以前的漏洞分析文章,看的过程中会发现吃力的点,这样再有目的的去跟进相关的编程技术点。而不是先一味的去啃编程书。

比如学习PHP漏洞挖掘:
先掌握php基本语法,常用php函数,对常用的php函数写一些demo。然后开始看以前php应用漏洞分析的文章,开始的一些基本漏洞比如简单的纯get,post没有intval或者强制转换造成的sql注入,比如没有htmlspecialchar造成的简单xss。看这些基本的东西我们之前打的底子就完全够用了。

然后我们看一些较高级漏洞的利用,比如各种变量覆盖漏洞,比如unserialize造成的代码执行,我们开始看的时候可能会觉得吃力。那就需要回过头去先看看extract等函数具体用法,for each对$_REQUEST进行变量生成的过程是怎样的,unserialize函数的执行流程是怎样的。然后再去看之前的技术文章就会豁然开朗了。这只是基本的php漏洞挖掘,熟练了之后尝试着去看一些框架的漏洞分析,比如thinkphp,这些又涉及到OOP的相关知识,那么再回过头去学习PHP OOP编程,然后再继续。如此循环下来,边学习漏洞挖掘边学习编程,这样的效率和效果都要比先单纯的啃编程书要强很多。这也是国内外技术人员做研究的一大差异,国内喜欢先学习理论基础,而国外注重先应用,应用的过程中遇到困难再去学习理论基础。

在我看来,一定的code基础是肯定需要的,如果连一点基础都没有,真的别谈说漏洞挖掘,更别说学好这门技术了。举个例子,你要找XSS,但是你连Javascript都不知道,请问你该怎么挖呢?怎么去构造payload(有效负载,简单说就是利用代码)?XSS的弹窗等都是通过Javascript写出来的,你都不懂,怎么写?XSS叫做跨站脚本攻击,明确的指出这是通过脚本来实现的。所以不管如何,如果要学习漏洞挖掘,起码需要一定的code基础。

其次,就如黑哥跟tombkeeper说的,分析学习过往的漏洞。通过分析过往的漏洞,可以很好学习别人漏洞挖掘的思路,对于自己学习挖掘漏洞是很有用处的。在国内,比如wooyun,一些公布的漏洞是可以看到详情的,看看漏洞是怎么被发现的,漏洞的原理又是什么,这都是有很大帮助的。

大部分安全厂商有自己的安全应急响应平台,对于提交漏洞的白帽子也会进行对应的奖励,不同厂商可能奖励会不同,所以在挖到漏洞后,可以选择到对应厂商的平台(可以见http://www.0xsafe.com)提交漏洞,当然也可以提交到wooyun漏洞平台或者一些重要漏洞可以提交到国家漏洞库(http://www.cnnvd.org.cn/)等。

累积一定的基础,多看,多学,善于分析各种漏洞,通过分析把其转化为自己的经验,那么在下一次的漏洞挖掘中就可能用到。

推荐蘑菇的微信,估计很多人已经收听,今天在群里看到有人问,就这里推荐下:

微信公众号搜索Evil-say作者是之前文章《攻下隔壁女生路由器后,我都做了些什么》的Evilm0,我就不多介绍了