个人博客:https://blog.gxzhang.cn
还请大家都多关照呀~
首先声明,本人在数学和算法上没什么造诣,只是发表一下自己的观点吧,最近一段时间在重新学习c语言。写这篇文章,主要是最近忙着重新学习一遍c的基础上,深入学习着重数据结构和算法方向,另外是一个小学弟私聊我,说在学习计算机相关领域数学需不需要特别好。(PS:他着重跟我说的将来要从事网安方向)由感而发写下这篇文章。简单说一下个人见解,大佬勿喷,MCM参加两次分别H、M奖,国赛运气好拿到一个国二。CTF和ACM是我的下一个阶段的目标!!! 附一个参加MCM的经历吧:https://blog.gxzhang.cn/20200225/2738.html
简单来说各位数学从幼儿园就开始,一直读到大学都有接触,也是密不可分的。从1+1到高等数学...大学计算机专业学生都有感触,计算机专业课程中最难的几门课程莫过于离散数学、编译原理、数据结构,当然像组合数学、密码学、计算机图形学等课程也令许多人学起来相当吃力,很多自认为数据库学得很好的学生在范式、函数依赖、传递依赖等数学性比较强的概念面前感到力不从心,这些都是因为数学基础或者说数学知识的缺乏所造成的。数学是计算机的基础,这也是为什么考计算机专业研究生数学都采用最难试题(数学)的原因,当然这也能促使一些新的交叉学科如数学与应用软件、信息与计算科学专业等飞速发展。
在大学的C语言中我们学习认真看书的同学们都知道,编程=算法+数据结构,出自于谭浩强的C语言程序设计。在这里我梳理一下:
数学好的人逻辑好逻辑好的人算法好算法好的人学习数据结构上手就快所以简单来说,数学好的人编程不会差,当然也会有特例,反正我认识的朋友数学好的,写的程序简洁明了,算法优秀,建模能力也很强。
Github上的poc基本上都是python来写的,那么你看懂poc编写规则也很容易,那么为什么大牛们挖到0day编写了poc来检测漏洞,编写了exp来利用。对于当下这个时代来说,不会是手工去完成渗透检测、利用。有时间可以看看大厂的招聘要求,基本上都是需要自己编写自动化程序,那么自动化的意义是什么呢?就是说可以用工具来代替我们人工检测的这个过程。
之前一个表哥给我说的挖洞思路,在访问站点的过程中打开F12中的Network模块,去看代码的过程很重要。
包括国光小姐姐的一篇代码审计:https://www.sqlsec.com/2020/01/sinsiu.html
代码审计的过程,对于你能否编写出这么一套cms可能难度大,当你的逻辑性好,数学能力强,你去阅读代码,去看他的函数和算法,Bypass,上传漏洞,逻辑漏洞。都是靠自己去挖掘,去审计他的代码。其实很多同学们(PS:可能只有我这个半吊子)喜欢去看一些实战性的文章,从而疏忽了对于基础的深入挖掘,大多数实战文章,没有不从代码入手的,包括你去了解sqlmap的原理也好,去做逆向安全也好,去分析APP也好,学习安全方向很多。还有大佬们发布的CTF的writeup,重点都是对于代码的审计,那么这个过程中,函数你看不懂,逻辑运算看不懂,算法看了一脸懵逼。希望大家在学习的过程中要注意的就是脚踏实地,从基础一步一步的往上爬,不要做一个脚本小子,大佬们写的poc能不能看懂就拿来用,都说sql注入那么简单,可注入毕竟在于owasp的TOP10中排名第一吧?
真正的原理懂了嘛?sqlmap使用手册百度一大把,原理可以懂了嘛,绕waf插件是否会用,插件自己能写的出来吗?其实大家在实战能获得更大的提升,但是希望大家一定要打好基础。数学思维可以培养一个人的逻辑,基础课要认真学于此之外,工具的合理运用要知道原理。
其实希望大家越来越好,挖的洞也越来越多,从基础开始分析,真正的去理解这个漏洞的原理,工具的原理。如果说没有什么方向的话从owasp top10的漏洞开始看,数学的思维也不是一天两天能明白的,希望大家都可以写出自己工具,早早有自己的0day!