BOF란 Buffer Overflow를 말한다.
데이터를 버퍼에 저장할 때 개발자가 의도한 크기 넘어에 값을 넣는 방식이다.
-> 초과된 데이터는 인접 메모리에 영향 (제어 관련 구문도 포함될 수 있음)
C언어 Stack BOF 방지를 위해, strcpy 함수를 strncpy로 교체한다
-> strncpy(buffer, argv[1], sizeof(buffer)-1);
형식으로 대입하는 매개변수 len 만큼만, dst 버퍼에 저장하도록 유도할 수 있다
sizeof에 -1을 설정하는 것은 C언어 문자열 끝 부분 null(0x00)까지 고려한 설계
입력 문자열이 버퍼의 크기와 같거나 클 시,
프로그램을 종료하는 방식으로도 BOF를 방지할 수 있다
(C언어 문자열 끝 부분 null(0x00) 고려하여, 버퍼 크기와 같은 문자열도 체크가 필요)
이렇게 BOF, Buffer Overflow에 대해서 알아보았습니다. 저 또한 전문적으로 잘 아는것이 아니므로 글을 쓴 것이 어색할 수 있다는 점 고려해주면 좋을 것 같습니다.