利用main_arena泄露libc基址
Last updated
Last updated
利用条件
有目标主机libc.so
可申请和释放 非Fastbin_chunk
unsorted bin是双向链表结构,在unsorted bin的顶端 32位指向
free和malloc操作时,最后free的chunk被链接到链表的头部,则申请chunk则是从链表的尾部开始
1 . 使用pwndbg调试,当unsorted bin中存在多个回收的chunk时,如图,先 free chunk2 及0x804a058 ,再 free chunk1 及0x804a160
此时unsorted bin的布局如图:
2 . 当然更好的,当unsorted bin中只存在1个回收的chunk时:
fd 与 bk 都指向
3 . main_arena存储在libc.so.6文件的.data段,通过这个偏移我们就可以获取libc的基址,这里我讲一下怎么找到main_arena的地址,首先使用IDA打开libc文件,然后搜索函数malloc_trim(),具体如下图所示。
为什么是这个呢,我们可以对照一下malloc.c的源代码,源代码如下图。
bingo !
PS:之前演示的是32位程序,64位程序同理,但 64位指向