본문 바로가기

OS-서버

[운영체제보안] 버퍼오버플로우

반응형

 

 

<  버퍼오버플로우란? >

 

사용자가 입력한 데이터의 크기가 너무 과해서 제한된 버퍼의 용량에서 벗어나는것을 의미한다. 

제한된 버퍼 영역을 벗어나면 다른 메모리 영역을 침범하면서 

프로그램에 문제를 일으킬 수 있다.

 

 

이 특성을 이용해서 패스워드 인증을 통과한다든지 , 더 높은 권한을 획득한다든지 ,
다른 PC로의 접근권한을 획득할 수도 있다.

 

 

 

 

< 버퍼오버플로우 취약 함수 > 

 

 

  •strcpy(char *dest, const char *src)

strcat(char *dest, const char *src)

getwd(char *buf)

gets(char *s)

fscanf(FILE *stream, const char *format, ...)

scanf(const char *format, ...)

realpath(char *path, char resolved_path[])

 

sprintf(char *str, const char *format)

 

 

 

 위에 함수들은 사용자 입력값길이에 대한 검증이 이루어지지 않는다.

 

 

 

 

< 버퍼오버플로우공격 대응 함수 >

 

 

 

잘못된 함수 사용

 

void function(char *str) {

 

char buffer[20] , buffer2[20];

strcpy(buffer, str); 

scanf("%s",buffer2);

return; 

 

 

}

올바른 함수 사용 // strcpy 함수는 입력 값에 대한 검사가 이뤄지도록 한다.

 

void fuction(char *str) { 

 

 char buffer[20] , buffer2[20];

 strncpy(buffer, str, sizeof(buffer-1);

 buffer[sizeof(buffer)-1]=0;

 scanf("%20s",buffer2);  // 입력되는 문자개수 20글자로 한정

 return;

 

}

 

 

 

 

 

 

 

 

 

 

반응형

'OS-서버' 카테고리의 다른 글

컴퓨터 부팅 과정  (0) 2018.12.09
곰플레이어 닷지 리버싱  (0) 2018.12.09
어셈블리어 개념 정리  (0) 2018.12.09
VirtualBox NAT 포트포워딩  (0) 2017.12.20
[운영체제보안] 레이스컨디션 공격의 이해  (0) 2017.05.31