hackerschool ftz ftz.hackerschool.org level16 (bof) wooy0ng 2017. 10. 28. 12:41 이웃추가 본문 기타 기능 이번 포스팅은 level16에 대한 풀이입니다 틀린 부분 언제든지 지적 부탁드립니다! 처음으로 힌트를 한번 볼까요?
void (*call)() = printit; 함수 포인터를 이용해서 함수의 주소를 받는 부분이 있네요? 또한 fgets()부분에서 bof가 발생하네요.
저 포인터의 주소를 shell()함수의 주소로 바꾸게 된다면 문제를 풀 수 있을 것 같아요. gdb로 스택을 한번 봅시다. buf[20]배열의 시작 주소는 ebp-56 인 것 같습니다. 또한 함수의 주소를 받는 함수 포인터가 위치하는 곳은 ebp - 16 인 것 같아요.
혹시 모르니 확인을 한번 해볼까요? 네 확실한것 같습니다ㅎ 이 부분을 shell()함수의 주소로 바꾸면 이 문제를 풀 수 있을 것 같네요. shell()함수의 주소도 알 수 있습니다. ...