前言
编码能力永远是IT行业的基础能力,对于语言学习的选择,信息安全行业与开发行业有显著的区别
这里来谈谈语言学习
正文
开发通常需要深入学习某门编程语言,但是信息安全通常来讲主打浅尝辄止,除了一两门熟悉的语言外,其他语言只需要过一遍语法即可,不需要完全掌握(也很难),目前AI已经比较成熟了,我们完全可以充分利用AI,但是有几门熟悉的语言还是必要的,这篇文章谈谈关于语言选择的问题
1,Python
Python永远是我要放在第一位说的
从使用频率来讲,它是几乎必学的,目前大部分Exp都是由Python编写(不乏国内有很多POC是直接一个请求包,或者基于Nuclei,但是对于较为复杂的Exp来说(尤其是当你需要实现多种操作或者复杂的利用),编写Python脚本还是十分的有必要),再加上平滑的学习曲线,非常适合我们第一个去学习(早期用Perl偏多,到现在已经很难看到其身影了,有部分比较老的工具需要用到Perl二开)
Python还十分适合编写自动化工具 编写效率非常高 著名的Xscan就是由Python编写 你可以使用Python快速实现各种自动化 非常适合写自动化工具
读写文件,解析数据,网络通信编程,HTTP/s请求处理,文本匹配处理,各种常用库的使用,都要尽可能地熟练
所以这里推荐所有入门信息安全的人都要去学习一下Python
2,Java/PHP
深入研究Web安全这两门语言必不可少
审计能力是Web安全的核心能力,国内常用的Web开发语言通常是Java,企业项目大多也是由它编写,并且中间件安全很多领域涉及Java,所以完全可以按照需要学习Java,如果你想钻研Web安全或者中间件安全,那么深入学习Java必不可少,反之则浅尝辄止即可,PHP在国内目前已经退出主流了,并且性能不佳,但是如果作为我们学习代码审计的起点我认为是可以的,一些老项目或者海外还是有一定使用率的,并且难度相较Java相对简单,可以学习但是不建议深入研究,不是说它不重要,而是确实用不到那么多
3,C/C++
绝对经久不衰的两门语言,什么时候学都没错
如果你经常做ExpDev/MalDev(这类人怎么会来看这篇文章?) 你就会清楚这两门语言的重要性
其实我最推荐学习的语言除了Python就是C/C++
除了太多太多内核提权类Exp涉及C以外,我认为C/C++对于你理解二进制会有很大帮助,所以这里非常推荐,并且当你掌握C/C++后,类似的编译型语言是一通百通的
这里解答下,C++并不是C的升级版,C++拥有一些C没有的特性,比如C不支持面向对象(对于安全开发来说真的区别不大,因为C也支持结构体通过指针函数调用函数,其实本质上和面向对象也差不多了)总体来讲学习任意一个都是可以的,根据自己的需要来即可
4,SQL
实话讲,我从来不把SQL当作一种”语言”,我经常叫它语句
但是它的重要性是毋庸置疑的高
总有新手说”学不懂SQL注入” 我想说,SQL你都没有接触过谈何学SQL注入
这里不需要像数据库运维一样非常了解SQL,只需要把基础语法了解一下,然后了解一下利用相关的语句即可
5,CMD/Powershell/Shell编程
提高渗透效率的重要工具,尤其是涉及域几乎就是必会的,需要单独学习一下
6,JavaScript
虽然名字相似,但是确实和Java完全不是一种语言,甚至相差甚远,和Python一样属于”胶水语言”
需要了解一下基础语法,部分逻辑漏洞需要用到JS审计,目前自动化脚本还是挺多的,包括Burp插件
感兴趣可以学一下,按需要学习即可
7,Linux命令
不算语言,但是必学,不多说什么(这个我觉得不用我说吧)
个人不建议看鸟哥(我也是读过全套),虽然很经典,但是确实学习效率较慢
8,其他语言
到这里几乎就不是啥很重要的语言了
属于那种,如果你不研究这些领域,你完全可以不用看的程度,列举一些方便大家自主选择
比如Golang,Rust,Ruby… Golang主要用于高并发开发,一些比较初级的规避技术也可以靠它实现,这一点倒是优点,并且一些高性能的安全工具/引擎也是靠Golang编写的,Rust属于那种吹的很厉害的语言,并不是说它有啥缺点,只不过它确实不适合所有人学习,学习难度非常高,比如一些特有的为了安全设计的特性:所有权,借用,引用,生命周期,不可变性… 导致它不适合所有人去学习,语法太过复杂,一些机制导致很多很小的细节出现差错都会导致编译不过,报错,所以这里不是很推荐,按需学习,不过一些规避牛子也确实比较爱用这款语言,Ruby…我感觉这款语言在国内的地位太尴尬了,除非你需要二次开发特定工具,否则不需要学习
没提到的语言同样按需学习即可
9,易语言
别来沾边好吧
学习平台
比较推荐有一定预算选择C语言中文网 百十来块钱就能充个会员
而且讲得非常详细 最推荐的自学平台
没有预算可以选择菜鸟教程 内容比较全面
暂无评论内容