前言
写这篇是因为学校社团招新需要给学弟学妹每个方向的大致印象,发展方向,当然我也希望这篇文章可以帮助到更多的人。接下来我会介绍一下入门pwn需要准备一些什么,学习一些什么,希望这些不成熟的意见可以帮助到刚开始入门pwn的你。由于篇幅有限,这里不会详细介绍各个知识点,更多的是一些链接,不涉及具体内容,只是帮你找到你应该学什么,推荐一些学习资源。
书籍推荐
这里推荐一些适合刚刚准备入门pwn方向的书籍,所以这里并没有列出一些pwn方向很重要,但不是新手需要的书籍。
《程序员的自我修养:链接装载与库》
这本书是对pwn入门来说非常非常有用的一本书,可以说是一本必读的书,能让你更清楚的了解很多pwn知识点背后的逻辑。可以说是必读的书了。
《CTF竞赛权威指南(Pwn篇)》
书中涵盖了pwn各个方向的知识点,虽说很多最新的知识点该书不能提供,但是作为入门数据,这本书的知识点起码够你学大半年了。比市面上其他ctf入门书籍更加适合pwn手,强烈推荐。
《深入理解计算机系统(又名CSAPP)》
这是一本很厚重的书,虽说没有像上面两本书那么直接对pwn做题有直接帮助,但是这本书一定是pwn方向,不不不,它可以说是所有计算机方向必读书籍了,对你长期成长来说肯定有帮助,希望在闲暇时间去读一读。
网站以及入门视频推荐
刷题网站和ctfwiki这里就不做过多的赘述了,这里提供一些适合新人pwn方向独有的平台,和自己觉得不错的入门视频
pwnable.kr
这个平台的漏洞虽然和我们国内比赛主流方向的关系不是很大,但是里面有很多可以学习的知识点,还是很推荐大家做一做的,很多题目比较适合新手。
XMCVE 2020 CTF Pwn入门课程
网址:https://www.bilibili.com/video/BV1854y1y7Ro?share_source=copy_web
这部视频可以说是全b站最为详细的pwn入门视频了,细节抓的很清楚,缺点就是过于详实,可能会让你缺少一份自己的思考,视频时间也过长,需要耐心观看
2020暑期Lilac-pwn入门培训
网址:https://www.bilibili.com/video/BV1Dt4y1D7mK?share_source=copy_web
这部视频其实是我入门时观看的视频,个人感觉讲解的很充分了,适合想要快速入门开始刷题的师傅们,其实从博客和题目中学习也是一种比较有效的方法
pwn入门需要的基础知识
掌握c语言
想要学习pwn首先就要学习c语言,这是最最最基础的工作,如果没有学习过c语言,可能连题目都看不懂。
推荐翁恺老师的c语言课程:https://www.icourse163.org/course/ZJU-9001?from=searchPage
学习汇编
学习pwn还是要懂汇编语言的,起码先学习x86/x64下的汇编语言,学好汇编会让你开始的路走的很轻松,可以先学习8060的汇编,推荐王爽老师的《汇编语言》
使用ida
ida是一个非常好用的静态分析工具,可以说是一个神器,她会帮助你非常轻松的分析出题目的逻辑,基本是必须会使用的工具。你会发现ida的图标是一个女性,其实这是第一位程序员,她的名字就叫ida。
推荐一篇博客:https://xz.aliyun.com/t/4205,这里有详细的使用教程
使用pwndbg
这其实是一个gdb的调试插件,这个工具可以帮助你更好的进行动态分析。关于工具的安装可以看我的另一篇博客,虽然是针对arm架构的树莓派的,但对于x64的ubuntu也适用。
使用pwntools
pwnatools的安装上面的链接中也有,这是一个编写python交互的库,是pwn入门必备的工具。
编写脚本类似这样:
from pwn import* |
官方教程:https://docs.pwntools.com/en/latest/
总结
pwn入门的基础基本就是以上这些,想要了解具体的攻击方法可以通过以上书籍、视频或者借助ctfwiki来学习(https://ctf-wiki.org/pwn/linux/user-mode/stackoverflow/x86/stack-intro/),由于只是一个简单的指南,这里不涉及具体漏洞的攻击方法。可以通过以上提供的链接进行学习。