Background

最近经历了一次ctf培训之后,突然对安全学习有了一点新的理解,所以写下文章来记录

part1

笔者认为,安全研究的学习并不同于正常的学校书本的学习,首先书的用处帮助很小,不管是什么书里面的技术都会经历过时,不像学校经典教科书比如计算机操作系统这种底层架构的经久不衰,其次学校学习是走一个完整的体系架构 编程技术和底层逻辑 ,而在安全学习的初期很可能接受不了这种教条的内容。最后我们可以放眼望去高校对网络安全的教育停留在纯理论,培训出来的学生能正常打ctf网络安全竞赛的人少,能做实战的更是寥寥无几,最后全去转了开发。

part2

笔者从打ctf开始学习安全到写下此篇文章已近一年半,笔者从ctf入的坑,本想着以ctf学习基础的方法来学习安全方法,并想着通过ctf的奖项表明自己的能力,提高自己的正反馈,可是经过一年实践发现效果差强人意 ctf和实战差距大,因为某些比赛的有利可图 导致大家不靠真实实力打比赛,而且由于ctf这两年比赛逐渐增多,为了淘汰一大部分人保留一小部分人进行线下的角逐,把题目变得偏、难、怪 (有些选手戏称是奥数题) 并且题目要求所掌握的知识面越来越多越来越广,如果没有强大的语言基础和理解能力很难在ctf比赛中取得好成绩,更别提正反馈的问题,这样不但会打击自己的自信心,还会陷入学一些与真正安全脱节的怪圈子里

part3

笔者认为一名优秀的安全研究员要有这些基本素质,1.扎实的编程基础 2.丰富的实战经验 3.有独立解决问题和思考的能力 4.有强大的学习力

首先不会编程的黑客不了解代码,不可能了解漏洞,自己挖掘这些漏洞的可能性也几乎为0,但我们发现大多数学习安全的师傅们对于编程的学习很痛苦,总说自己学了忘,忘了学,这是吃了不用的亏,编程是门工具,我们需要边学边练 看一些开发的视频独立经受一个完整的项目之后,有很多种方法可以锻炼代码能力,比如出ctf题,留一个漏洞场景,或者是去自己开发一些安全小工具,具体的可以参考一些经典工具的源代码参考,比如sqlmap,在写代码前可先尝试学习阅读 能读懂他人的,并且可以尝试对代码进行审查,为什么这样写 这样写的好处在哪 这样写会不会有漏洞,锻炼这个思维

安全的本质是对抗,作为一名安全研究员肯定想有自己的产出,比如挖出0day ,比如实战打下某个网站 实战经验的获取我们可以通过寒暑假去实习,实习可以接手真实项目。并且还可能获得前辈的指导,这对实力的提升非常有帮助 并且自己平常可以尝试对src漏洞的挖掘,初期可尝试edusrc这种比较容易的,取得一些正反馈 而某些大型活动你可以对代码进行审计来发掘漏洞,这个参考第一条对代码的理解能力,自己如果没有这些条件可以尝试打一些靶机,比如htb tryhackme 这种虽然是靶机,但是一定程度上还是增加实战经验,比如提权被ban了xx命令该咋做 渗透测试起手应该干什么等

独立解决问题和思考的能力是现在大多数人所缺失的,作为一名优秀的黑客,要时常复盘,比如平常学习的知识点可以博客记录分享,费曼学习法获得更牢固的知识基础,然后就要尝试自己做一些无论是项目还是做一些ctf或者实战之类的 尝试独自解决 在哪儿出现问题了进行记录,等结束之后找师傅们探讨原因然后了解自己的不足去补足,而思考能力更重要,平常什么问题不会别直接不百度就去问 参考文章:提问的艺术 然后出现问题要先想可能是哪里出现问题然后进行排查,之后再进行询问

笔者认为随着安全圈子技术不断的发展,需要学习的东西越来越多,这个时候就需要提高效率,减少时间成本,不要占据自己的休息时间来学习,这样会影响第二天的状态,自己的身体问题也可能造成影响,在学习时候关闭通讯软件,不点开不相关对网页,清楚规划todo-list,完成今日的目标就算成功,这样可以大大缩短时间的成本

last

最后笔者还是不建议大家通过ctf来入门安全,将ctf当作游戏,多提升自己的代码能力,多挖洞,能够对真正自己未来的发展有帮助,笔者心态一直不好,因为打比赛做不出来题经常陷入焦躁状态,导致患上了躁郁症,也是建议大家做不上来题其实蛮正常的,不要总和别人比 中国的精英教育要求大家就做第一第二,但其实真正学习自己想学的东西,并能以此谋生才能获得快乐。