总结了最近学到的一些做题步骤的方法
一.任意写的方法
1.堆溢出 控制 fd指针,或其他关键数据
2.double free 申请某个区域(符合一定条件)
3.unlink 控制堆的全局指针区域,通过edit修改指针指向的区域内容攻击
二.伪造堆块方法
1.可以直接输入数据,构造堆块
2.通过控制关键位置的数据,伪造堆块 (有一个可变且可控的数据,伪造为size)
3.利用0x7fXXXXXXXXXX地址,在hook附近,通过数据的错位伪造堆块
三.泄露libc的方法
1.大于0x80的堆块,释放后,进入smallbin,largebin等等,因为除了fastbin,其他的bin都是双向链表,所以bk指针是指向main_arena,而main_arena距离malloc_hook很近,可以算出malloc_hook的地址,进而减去malloc_libc,得到libcbase
2.一般用程序自带的show之类的函数泄露
3.或者在可以任意写的时候修改某函数为puts函数泄露
-------------本文结束感谢您的阅读-------------