문제의 c 소스 코드입니다.
strcpy() 함수는 길이를 정해주지 않아서 BOF 취약점이 있습니다.
input으로 넣을 수 있는 길이가 buf의 크기보다 크므로 BOF 공격이 가능합니다.
win() 함수의 주소를 ret로 바꿔주면 됩니다.
checksec으로 보호 기법을 확인해줍니다.
vuln() 함수를 디어셈블 해주면 buf의 주소로부터 rbp까지의 거리가 0x20임을 알 수 있습니다.
이전 문제인 bof1처럼 문제를 풀어주면 똑같이 EOF가 터집니다.
(stack alignment가 깨져서 그렇습니다)
win() 함수를 디스어셈블해서 보면 0x401231에 "/bin/sh"가 인자로 들어갑니다.
따라서 ret 주소를 0x401231으로 바꿔주면 win() 함수를 실행시켜 쉘을 획득할 수 있습니다.
페이로드를 작성해주고 실행시켜주면
플래그가 나왔습니다
https://ssongkit.tistory.com/143
'write-up(pwn) > G04T' 카테고리의 다른 글
[G04T] Simple BOF 3 (0) | 2022.09.08 |
---|---|
[G04T] Simple FSB 3 (0) | 2022.09.08 |
[G04T] Simple FSB 1 (0) | 2022.09.07 |
[G04T] Simple FSB 2 (0) | 2022.09.06 |
[G04T] Simple BOF 1 (0) | 2022.09.05 |