大学毕业后,我开始简单入门,写网站程序代码,从事sql注入和安全测试。现在,作为一名安全工程师,Sinesafe在安全行业成长了快11年,发现自己不懂问题。实战中多次渗透测试,老有所学依然是成功之道。当今时代,很多安全开发都是依靠大数据来保证的,但是人工网站安全测试却被忽视了。只有当客户存在安全漏洞时,才会想到找人进行全面的漏洞测试。
如何开始安全渗透测试本质上是一个新的领域。我个人的观点是,你可以分三步循序渐进地学习。
1.明确目标,学以致用
首先,你要明确学习安全渗透测试的目标。你想玩CTF,挖CVE洞当白帽子,写个安全代码,或者开个安全软件之类的。不同的目标让你的学习道路不同。
不建议立即从基础做起。必须有人告诉你学习C,数据结构,算法,汇编等。其实并不聪明,目标导向:前面提到的每一个科目都是大科目,其实在安全方面用的并不多。如果你把很多时间花在暂时不用的东西上,你什么时候能达到目标?人的精力是有限的。
2.细化你的目标,制定具体的学习内容
比如我们定一个目标,写一个pE保护壳,那么你首先应该做什么?
去谷歌搜索一下pE有哪些保护壳?比如压缩外壳、加密外壳、虚拟机等。有多难?
对于初学者来说,压缩外壳相对简单,所以要从中学习。
然后去github或者谷歌搜索开源的pE压缩shell和相应的教程。发现pE压缩壳可以用汇编写,也可以用C和C写,这时候我们可以选择汇编先写。
然后查看关于压缩shell原理的教程和书籍,比如书籍推荐《加密与解密》,与开源shell的代码进行对比。如果你不懂组装,找一本组装书,比如王爽的组装入门书。不要全部看完,要和shell的代码对比一下。
整个学习过程变成:
PE保护壳-“压缩壳-”汇编压缩壳-“搜索开源代码和原理教程-”比较壳代码,看汇编书籍了解
你越细化目标,就越知道自己在做什么。
3.反馈
学习是一个不断反馈的过程。作为第二步学习过程中的初学者,你不会那么顺利。如果你看看开源代码,你会遇到一些你不理解的东西。如果你自己写代码,你肯定无法调试它。这时,你会继续寻找信息,阅读书籍,调试和理解。
正常的学习过程一般是:
学习-“应用-“反馈”-然后学习
4.推荐CTF
仍然强烈推荐CTF比赛。为什么这么说?有两点。
接近实战的机会。现在的网络安全法非常严格,不像以前的所有人。
话题跟上了科技的前沿,而很多书却落后了。
如果你想玩CTF,直接去竞赛题。如果你不理解竞赛题,继续根据你不理解的内容来看信息。
如果你想对自己的网站或平台、App进行全面的渗透测试服务,可以去网站安全公司,推荐SINESAFE、启明星辰, 绿盟, 鹰盾安全等国内的安全公司。