这个题和这次秋季赛的第四题很类似,都是利用的堆的unlink来溢出,然后system(“/bin/sh”)来提权的
所以打算先学习这个,然后再去自己做秋季赛第四题
主要是看了这篇writeup:double free解法
double free,就是free两次(废话)
先来分析程序流程,再来说double free是个什么原理
name是提示我们输入的,menu是显示程序几个主要功能的选择项的(一般的pwn题都是这种格式)
点开menu,看到这个
结合IDA分析功能,1是创建新的堆块,2是删除,3是修改堆块内容,4没用
创建功能这里很重要:
totalnums是说总共创建了多少个堆块,在之前的if语句中有判断不能超过4个
6020c0地址这里保存的是每个堆块的大小,调试下可以看到
0xa0 = 160,0x64 = 100
<