1. 学习路线
作为一名网络安全的学生,最开始接触到的就是web安全。但是在学习web安全的过程中,逐渐发现web安全需要更多更广的知识面。但是这对于现在的我来说是不现实的,因为在读研过程中,花费更时间去阅读论文和完成导师的项目。
此外,总是听见别人说,pwn爷,pwn爷的,也觉得学习pwn,二进制安全是很厉害的。不过也正式因为如此,pwn的学习需要很多基本知识(汇编,C/C++,linux安全机制,堆栈相关知识等)。总之就是需要很多知识作为铺垫才能帮助去深入理解pwn的原理和技术。
2. PwnCollege
众所周知,学习安全技术,特别是这种国内敏感技术,很多国内的网站是无法找到资源的。机缘巧合之前,我认识了一个大佬同学(腾讯安全、UCI博士在读),在他的建议下,我开始尝试pwnCollege的学习。作为一个英语高考只有100分的我来说,在学习过程中确实遇到了很多很多的困难。
但是兴趣是最好的老师,这个课程的学习相比课堂上的读PPT会更加有趣且令人心动。在这种兴趣的不断吸引下,我从23年8月份开始学习pwnCollege的CES-466课程,截至目前位置已经完成一半内容 的学习。当然距离蓝带的路还是很远很远。
从最简单的程序交互->汇编基础->shellcode注入->debug->逆向工程。。。
在这些学习过程中,我收获很多,开始逐渐向着计算机底层靠近。
3. 感受
通过冯诺依曼结构的代码段和text段没有明显区别可以在堆栈上写入shellcode,去执行恶意代码;
设置ROP完成系统调用;格式化字符串泄露程序carry,爆破PIE,libc地址泄露,任意内存读写去修改汇编指令完成程序执行流(CFI)的控制,这些都是我在学习中获得的知识。每一次过题,都是一种前所未有的幸福,不仅仅是自己的知识增长了,更重要的是,解开了所谓”抽象“的面纱。