这篇文章面向入门的同学,更偏向于学习的方法,而非渗透的技巧,请看准需求再往下读。我是SINESAFE网站安全公司的技术,水平有限,所以自然亲民,和很多渗透测试新手都很熟。他们中的大多数都是大学生,还有很多年的工作,但一直对网络安全保持着热情。很多同学都很努力,但怎么也找不到一条通顺的道路,顺利地入门成长。渗透测试仅仅是计算机科学中一个很小的分支,它和其他学科一样具有相同的计算机基础。
不能入门,对于80%的初学者来说,其实基础都不够。其中有几个学生是刚刚进入大学大门,不知道该通过哪一门考试,怀着探索神秘世界的心情,面对着黑洞。很多情况下,实际上是我们的教育出了问题,计算机科学专业(甚至更直接的网络安全专业)的日常教学和实践让大部分学生学不到东西。没有计算机的基础底子,直接面对渗透测试行业当然很困惑。对着这些同学,我自然不能从电脑原理、操作系统原理、编译原理、编程语言、算法与数据结构、网络基础、加密与解密...这一堆西装革履的东西,再来学习渗透测试。不过幸运的是,他们的兴趣还在,可以利用自上而下的方法,找到一个简单的切入点去学习,引导初学者通过自己的努力,70%的自学 30%的理论,进入渗透测试之门。下面的图表就是这种想法的基本学习思路。
理解渗透测试的系统结构是第一步,从整体上理解这项技术,避免从一入门就走错了方向。培训的切入点是使用工具,工具门槛低,容易上手,能带来成就感。培养在使用工具过程中对渗透测试的流程和基本测试方法的学习,对技术概念和应用体系结构、协议、原理的理解和感性理解。
程序设计是一条重要的分水岭,但也要采取容易入门的方式来学习和培训程序设计,入门即可,抛弃那些难懂的概念就好了。实施工具和应用,这是在编程的基础上,直接上手做函数,在这个过程中,对编程技能的提高起到加深作用。从代码中了解工具、漏洞和应用程序本身。计算机基础知识的学习,在整个过程中,通过多轮轮训的方式,使一些专业概念逐渐加深。如果能够用代码实现一些基本的工具,并将它们用于实际的渗透测试任务,那么我认为入门的任务就完成了。接下来我们将对这个基本过程和目标进行进一步分解。