파도가 칠 때는 서핑을

Soon as possible

Wait!

공부/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