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
'공부 > C\C++' 카테고리의 다른 글
[C/C++] write와 printf의 혼용으로 인한 문제 (printf 출력 순서 이상) (0) | 2021.03.31 |
---|---|
[C/C++] char *와 char []의 차이와 bus error (0) | 2021.03.31 |
[C] 가변인자, 가변인자 함수 (0) | 2021.03.18 |
[C/C++] int와 long, unsigned int와 unsigned long의 차이와 혼동으로 인한 문제점 (0) | 2021.03.18 |
[C/C++] 구조체와 연결리스트 (0) | 2021.03.16 |