간략히 설명하는 버퍼 오버플로우는,
버퍼 오버플로우의 개념은 덮어쓰기이다. 벗어난 데이터는 인접 메모리를 덮어 쓰게 되는데 다른 데이터가 포함 되어 있을 수도 있는데, 손상을 받을 수 있는 데이터는 프로그램 변수와 프로그램 흐름 제어 데이터도 포함된다. 이로 인해 잘못된 프로그램 거동이 나타날 수 있으며, 메모리 접근 오류, 잘못된 결과, 프로그램 종료, 또는 시스템 보안 누설이 발생할 수 있다.
A |
B | ||||||
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
6바이트 길이 스트링 버퍼 A와 2바이트 길이 정수형 B, 우선 A의 6바이트 모두 만 포함하며 B는 숫자 1을 포함한 1바이트 크기이다. 여기에 문자열 network를 A버퍼에 저장한다.
A |
B | ||||||
n |
e |
t |
w |
o |
r |
k |
0 |
여기서 문자열 network의 끝을 알리는 널 값 0이 스트링의 뒤에 위치하면서 기존의 B값을 덮어쓴다.
이런 식으로 의도치 않게 혹은 악의적으로 프로그램의 메모리를 공격하는 방법이다.
댓글