从大学毕业的时候开始简单入门,写写网站程序代码,搞搞sql注入以及安全测试,到现在Sinesafe当安全工程师,差不多在安全行业成长了11年,发现不懂得问题随着实战渗透测试中非常多,还是学到老干到老才是成功之道。当今时代的安全发展很多都是依靠大数据去确保,而人工手动网站安全测试却被忽略了,只有当客户出了安全漏洞问题,才想起找人工进行全面的漏洞测试。
如何入门安全渗透测试 ,本质上是如何入门一个新的领域。个人的见解是你可以从三个步骤来递进学习。
1.明确目标,学以致用
你首先要明确学习安全渗透测试的目标,你是想打CTF比赛,还是当个白帽挖CVE洞,还是想写个安全的代码,或是开源个安全软件等,目标不同,你的学习路径也是不同的。
不建议立即从基础学起,肯定有人给你说学c,学数据结构,学算法,学汇编等等,其实这是不聪明的,目标导向:之前说的每一门都是个大学科,其实用到安全上的 并不多,如果你在暂时用的不多的内容上花费了很多时间,那么你什么时候才能实现自己的目标呀,人的精力是有限的。
2.细化你的目标,制定具体的学习内容
例如咱们定个目标,写一个PE的保护壳,那你首先要做的是什么呢?
先去google 搜索 PE的保护壳有哪些种?比如压缩壳,加密壳,虚拟机等等,难度高低怎么样?
对于入门者来说,压缩壳相对简单,那就从这个开始学。
接着去github或者google搜索 开源的PE压缩壳和相应的教程。发现PE压缩壳有用汇编写的,有用C,C++写的,这个时候咱们可以先选择汇编来写。
然后就查询一下压缩壳原理的教程和书籍,比如书籍推荐《加密与解密》,对比着开源壳的代码去理解,如果汇编不懂,找到一本汇编书,比如王爽的汇编入门书籍,不要全看完,对比着壳代码 看到哪去学哪。
整体的学习过程变成了:
PE保护壳 -》 压缩壳 -》 汇编压缩壳 -》搜索开源代码和原理教程 -》 对比着壳代码,看汇编书籍理解
将目标越来越细化,你就越清楚自己做什么。
3. 反馈
学习是一个不断反馈的过程,你在第2步的学习过程中,作为初学者肯定不会这么顺利,看看开源代码也会遇到不懂得地方,自己写的代码的时候肯定也会调试不通,这时候就接着去找资料,看书,调试,搞懂。
正常的学习过程一般是:
学习 -》应用-》反馈-》接着学习
4. 推荐CTF
CTF比赛还是非常推荐的,为啥这么说呢?有两点吧。
接近实战的机会。现在网络安全法很严格,不像之前大家能瞎搞
题目紧跟技术前沿,而书籍很多落后了。
如果你想打CTF比赛,直接去看赛题,赛题看不懂,根据不懂的地方接着去看资料。