如何学习堆
在这里分享Roderick师傅提供的学习路线
学习glibc堆利用流程:
1. 学习堆结构体,chunk 、bins、 malloc_state、_heap_info
2. 分析malloc和free的大致流程(源码)
3. 分析malloc和free的详细流程(附带arena的分配、使用、释放,heap_info的创建、使用等)
4. 学习堆利用技巧(主要是各种house of技巧)
5. 学习与堆有关的其他技巧(搭配IO_file的知识)
总体来说,学习glibc堆的方法主要是多看源码,了解堆的各种机制之后,再去学习利用技巧。学习利用技巧推荐用shellphish大神写的how2heap教程,观看源码推荐使用Bootlin的在线glibc源码阅读器
学习堆是一个比较痛苦且漫长的过程(Roderick师傅说精通快则2个月,慢则4个月QAQ),其实我早在寒假前就已经开始看堆了,但是一直进度不快,其一是摆烂,没有花费太多时间在上面,其次是没有掌握学习堆的方法。通过Roderick师傅的教导,我会尽可能在接下来的四个月内将大部分glibc堆利用更新至博客,也算是对自己的一个鞭策
学习堆漏洞利用的意义
1.对实战的价值
如上面所说,学习堆主要是要观看源码,这其实并不是单纯为了CTF比赛,这其实是在提升我们观看与理解源码的能力,当在实战中观看很大段的源码时,我们也能够看懂。
2.举一反三,对挖掘漏洞的价值
其次,glibc经过这么多年的漏洞挖掘,可以说各种类型漏洞层出不穷,在学习利用技巧的同时不应该只背模板,而应结合漏洞触发原理部分的源码,思考为什么这么写有漏洞,在下次遇到类似的代码时可以直接发现漏洞
总结
跨过堆这一大难点,pwn方向或者说二进制漏洞的挖掘才算是登堂入室,才算打开了pwn的大门。
Comments NOTHING