공부/C\C++
[C/C++] Heap BOF(Buffer OverFlow)란
hyeonhki
2021. 3. 31. 16:46
728x90
HEAP BOF(Buffer OverFlow)
HEAP 과 STACK
메모리 상에는 HEAP과 STACK이라는 영역이 있다.
stack은 임시적인 데이터function parameters, return addresses, local variables 등)을 포함한다.
stack은 영역을 넓힐 때 높은 주소에서 낮은 주소로 영역을 넓히지만, heap은 낮은 주소에서 높은 주소로 영역을 넓힌다.
| STACK |
| :------: |
| ⬇️ |
| ⬆️ |
| HEAP |
- HEAP
힙이란 동적 메모리 할당 영역으로, 사용자가 쓰기 시작해야 확보되는 공간이다.
데이터 사이즈를 알 수 없을 시 사용하며malloc
,free
등의 동적할당과 상호작용한다.
Heap overflow
힙 오버플로는 힙 데이터 영역에서 발생하는 버퍼 오버플로의 한 종류.
- 버퍼 오버플로우(BOF)
: 컴파일러가 배열의 경계검사를 하지 않아 선언된 크기보다 더 큰 데이터를 기록함으로써 발생되는 현상. - 힙 오버플로우
: 힙 영역에 할당된 버퍼의 크기를 초과하는 데이터를 기록하거나 저장된 데이터 및 함수의 주소를 변경함으로써 임의의 코드를 실행.
힙 데이터 영역에서 일어나는 버퍼 오버플로가 힙 오버플로우.
인접한 주소에 할당된 낮은 주소에 위치한 버퍼가 오버플로우 될 때 발생 가능.
📚 참고 서적 및 웹사이트
728x90