라벨이 버퍼 오버 플로우인 게시물 표시

[컴퓨터 보안] 버퍼 오버플로우(Buffer overflow)의 개념과 예방법

이미지
버퍼 오버플로우(Buffer overflow)의 개념과 예방 버퍼 오버플로우 개념 버퍼 오버플로우는 버퍼 오버런(buffer overrun), 버퍼 오버라이트(buffer overwrite)라고도 불린다.  버퍼 오버플로우의 개념은 버퍼에 할당된 저장 영역에 할당된 영역보다 더 많은 자료를 입력하여 데이터를 변경 할 수 있는 조건이다.  공격자는 조건을 이용하여 시스템 먹통으로 만들거나 코드를 삽입해서 시스템의 제어를 가진다. 버퍼 오버플로우는 스택 버퍼 오버플로우, 힙 버퍼 오버플로우 2 가지가 있다. 버퍼 오버플로우 예제 1. 아래 코드를 실행 해보자. #include <stdio.h> #include <string.h> void vulnerableFunction ( char* input) {     char buffer [ 10 ];     strcpy_s ( buffer, 20 , input ) ; //4 copy하기     printf ( "입력값: %s\n" , buffer ) ; //공백"\n" 포함 10자가 넘으면 오류 발생 } int main () {     char userInput [ 20 ];     printf ( "문자열을 입력하세요: " ) ; // 1. 문자 입력     gets ( userInput ) ; //2. 문자열 입력 받기(공백"\n" 포함 )     vulnerableFunction ( userInput ) ; //3. 함수 가기     return 0 ; } 2. 1234567891 을 입력하면 총 11글자다.(gets 함수는 문자열을 입력하는 함수인데 공백(\n)을 포함 한다.) 3. ...