write-up(pwn)/G04T
[G04T] Simple BOF 2
ssongk
2022. 9. 5. 12:11

문제의 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
[G04T] Simple BOF 1
문제의 c 코드입니다. win() 함수에 셸 코드가 들어있습니다. checksec으로 보호 기법을 확인할 수 있습니다. 메인 함수를 디어셈블하면 버퍼부터 $rbp사이의 거리가 0x70임을 알 수 있습니다. gdb를 통
ssongkit.tistory.com