tcache_double_free_overlap
ciscn_2019_final_3
overlap:参考文章
题解参考文章:参考题解
ida速览
- main函数只有add和free可以使用
1 | void __fastcall __noreturn main(__int64 a1, char **a2, char **a3) |
add
- 核心就位于画红框的地方,相当于show了。

remove

思路分析
- 泄露libc是必不可少的,该题目有tcache,要free掉0x410以上的chunk才可以进入到unsorted bin 中,但是此题目规定了只能size只能<=0x78,于是我们想到了overlapping修改size
- 关于overlapping可以看开头的文章,修改完size,free即可获得main_arena+96地址,得到libc,获得onegadget
- double free 改malloc hook为onegadget,再次malloc即可,相当于调用onegadget
EXP分析
overlapping+泄露libc
- 想要overlapping,得先构造出0x421的chunk出来,一开始没有构造,后面再次malloc的chunk其实是在这个free_chunk里面的,再次free会报错。
1 | # 0x400 = 8*0x80 |
- 这里也不是很懂,不知道为什么中间会插一步tcache,以后再填上
1 | free(0) # unsorted bin 此时chunk0_addr -> main_arena+96 |
double free 修改malloc_hook
- 修改malloc_hook为onegadget,然后再次malloc就可以getshell
1 | free(5) |
完整EXP
1 | from pwn import * |
- 标题: tcache_double_free_overlap
- 作者: D0wnBe@t
- 创建于 : 2024-09-23 15:58:04
- 更新于 : 2024-09-23 20:21:36
- 链接: http://downbeat.top/2024/09/23/tcache-double-free-overlap/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论