Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

师傅您好!想和您简单交流一下 #8

Open
tangzichengcc opened this issue Mar 28, 2023 · 2 comments
Open

师傅您好!想和您简单交流一下 #8

tangzichengcc opened this issue Mar 28, 2023 · 2 comments

Comments

@tangzichengcc
Copy link

之前学堆的时候搜到的你的博客,发现很多内容都不错,比较详细,深入浅出,也从中看到了一个人的成长,受益匪浅.看了你之前的经历,大二就在玄武实验室实习,太厉害了!
比起技术细节,我想问的问题是,你的学习路线是怎么规划的,就是我现在学习二进制的时候会有点迷茫,没有一个整体的规划,学的东西比较散和零碎.看到你每周的任务其实都比较丰富的,我觉得大概会有一条路线指引着自己每周去做什么.
不知道博主能否简单分享一下心得,非常谢谢!
@Kiprey
Copy link
Owner

Kiprey commented Mar 28, 2023

我想一下。就学习路线而言,我的路线大体上是分为三步:打基础、积累和突破。

首先是打基础:我的记录里前20周基本上都在学习各个课程内容,没有打比赛、没有挖洞,就纯粹的学习。当时大一下这半年刚好因为疫情,空闲时间大把,因此可以全身心投入进这些基础内容中来学。学的内容包括计算机组成原理、编译原理、操作系统等等。对于一个二进制手而言,这些基础知识是相当必须的。我在大一年寒假接触的 CTF,但是随着接触的深了,越来越感觉有心无力。因为很多内容都没有系统的学习,对于自己而言都是新内容,就会感觉自己要学的东西非常零碎,非常杂的样子,所以后面就干脆全心全意先打基础,面向那些要动手的课程实验来学习。

其次是积累。在基础打得相当不错之后,接下来就尝试去接触真实世界的漏洞利用。普通CTF菜单题和堆题,与实际真实世界的漏洞挖掘与利用完全不同,乍一接触就会感觉有一个断层。我比较喜欢先从相关的 CTF 题开始入手,比如针对 chrome 或者 v8 引擎的 CTF 题,然后对着网上的 writeup 一顿抄,复现,进行各种尝试,比如变动 poc 之后会发生什么情况。在稍微积累一点知识后,我就会尝试去复盘各个 CVE 漏洞,在复盘的过程中理解 poc 是如何触发某些特定代码逻辑的,理解目标程序的代码风格和代码结构等等。

最后就是突破。当积累了一定知识之后(无论是对目标的理解还是代码/调试实操),接下来就尝试去挖自己的洞。门槛低的方式就是去搞 fuzz,这条路对目标的理解不需要太深,只要有扎实的开发功底就行,而且也能自动化。然后在 fuzz 的时候多看看别人的洞的 poc 能不能跑出来,如果自己跑不出来就进行改进。除了这些之外就有事没事看看别人发的论文或者议题,看看人家的 idea 是什么样子的,多做积累。

搞安全这一行尤其是挖洞,idea 相当相当重要,必须多花时间,勤积累。但还有一个最为重要的是,你需要找到一个志同道合的学习小伙伴一起学习与研究(线下朋友/线上合作交流的师傅都可以),双人成行互相合作可以走的更远,而且相互激励也不会让自己陷入倦懒。

其实要说整体规划的话,实际上我也是走一步看一步,每周只规划自己这周要做的事情,周末复盘一下。尽可能地实现局部最优嘛,来达到可能的全局最优。

@tangzichengcc
Copy link
Author

受教了、非常感谢师傅花时间详细地分享心得!!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants