很多渗透测试的初学者问过我关于渗透测试与编程和代码审计的关系,我觉得编程是基础或者可以看作一个平台,在这个平台上可以更好的进行代码审计和渗透(这里指黑盒),视角更高,看到的东西更多。大多数假设性问题都与网络安全有关。然后常见的开发语言:PHP、Java、Python等。如果你掌握了其中一种语言,了解了基本的语法和该语言的特点,那肯定会涉及到数据库的相关内容,然后你一定会了解SQL的基本用法。还要了解前端HTML&CSS等内容,了解整个web应用的架构是如何运行的,了解一个URL访问背后显示整个页面的机制。
代码审计属于白盒审计,从审查源代码开始,寻找漏洞。有编程基础的话,肯定可以先阅读理解代码,更重要的是可以根据自己的开发经验猜测bug可能导致漏洞的地方,然后一步一步的回顾每一个可能的“突破”。所以编程是代码审计的基础。
渗透我说的黑盒测试就是先把应用看成页面效果,然后再去找漏洞。这种情况下,如果你没有编程基础,不熟悉运行机制,不了解整个页面的web交互是如何进行的。所以如果你没有前辈留下的经验,或者整理互联网上各种常见的web漏洞,也许你真的无从下手,因为你不明白那是什么。你不懂get和post的区别,URL参数,SQL注入,xss等。但是现在常见的Web漏洞和利用方法很容易获得,所以也许你可以用渗透测试工具来发现漏洞,但是一个waf可能会把你拒之门外。所以编程是渗透的基础或平台。
但我不否认有没有编程经验和能力的人。代码审计也可以发现利用点甚至Oday,黑盒测试也可以发现漏洞。
代码审计是白盒审计,其实也包括代码审计测试,但其实是更注重安全渗透的黑盒攻击。网络渗透网络渗透APP渗透,攻防一起成长。没有攻击就没有防御先做好编程,保证逻辑能力没问题,攻防兼顾,做一个懂安全的好代码农民,然后有渗透或者审计。你的情况,好像还没有稳步攀升,其实是在一步步审核这个行业的时候,以合规为导向。目前在国内还不成熟。其实有些不懂开发的人是用工具和经验在这个行业做出成绩的。