UAF漏洞(hitcontraining_uaf)
知识点
学到这里感觉学的很乱,感觉什么都要去了解,但是什么都不是很了解,可能学到后面的点把这些知识点串起来就好了吧。
UAF
use after free顾名思义就是在这个chunk被free后面进行利用
当一个chunk被free后,这个函数内部的数据不会马上清除,这些数据会被保留在原来的位置,然后这个chunk会被标记为free后,并且会根据chunk的大小被分到不同的bin中去,有(fastbin,unsorted bin,large bin….)这些bin就是以链表的形势把这些free后chunk链在一起
例题
下面以buu上面的hitcontraining_uaf进行说明
这个题目应该在glibc2.23环境中运行,但是这个题目大部分环境都可以打,就没改了
检查保护
ida打开
函数运行的时候会进行菜单选择
这里的delete函数中
这里可以看到free掉函数后面没有把函数的指针置零
因此这里存在漏洞
同时这个题目存在后门函数
先申请两个堆块
这个时候再free掉
free后面的bin
这个时候我们add(0x10,magic_addr)
因为在printf函数中是先申请note_list中的地址,在fastbin中(tcachebins)中也差不多,有着先进后出的规则,又因为bin中会把大小相似的的chunk再次申请,因此在chunk0的notelist是chunk2的notechunk(可以写入),所以我们调用chunk0中的printf函数就是调用了后门函数
exp
1 | from pwn import* |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 鱼非愚!
评论