시스템 해킹

 1576, 1/79 회원가입  로그인  
   rura6502
   http://없음
   해커스쿨 대학생과정 BOF quiz.c 궁금한점입니다.

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


********************************************
int main()
{
        int auth = 0;
        char passwd[20];

        printf("Password : ");
        gets(passwd);

        if ( strcmp(passwd, "secretkey")==0 )
                auth = 1;

        if (auth)
                printf("Success\n");
        else
                printf("Fail\n");
}
***********************************************
제가 이해하기론
이 코드 컴파일후 실행시
Password :
입력란에 20바이트가넘는 입력값을 줄경우 auth 변수의 영역으로 넘어가
버퍼오버플로우현상이 발생해 auth의 값이 0이 아닌값으로 (결론적으로 참인값)
으로 변경되어서 Success 를 유도하는걸로 이해했는데 입력값을
20바이트 1234567890 1234567890 1234 (띄어쓰기는 보시기 편하라고 해논거구 입력시 붙여서씀)
입력할경우 Fail 이 출력되고
1234567890 1234567890 12345 입력할경우
Fail 이 출력되면서 아래와같은 킨 에러문이 출력되는데
어떻게해야하는건가요?
숫자로입력하지않고 알파뱃으로 20글자입력후 4글자 입력해도 똑같이 fail 이 출력됩니다.
시스템차이때문인가요??
우분투 최신버젼사용중입니다.
**********************************************************************************************************
Fail
*** stack smashing detected ***: ./quiz terminated
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(__fortify_fail+0x37)[0x7ffa6f41d807]
/lib/x86_64-linux-gnu/libc.so.6(__fortify_fail+0x0)[0x7ffa6f41d7d0]
./quiz[0x400693]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xed)[0x7ffa6f33476d]
./quiz[0x400539]
======= Memory map: ========
00400000-00401000 r-xp 00000000 08:05 2230860                            /home/rura/study/hack/buffer_overflow/quiz
00600000-00601000 r--p 00000000 08:05 2230860                            /home/rura/study/hack/buffer_overflow/quiz
00601000-00602000 rw-p 00001000 08:05 2230860                            /home/rura/study/hack/buffer_overflow/quiz
01907000-01928000 rw-p 00000000 00:00 0                                  [heap]
7ffa6f0fd000-7ffa6f112000 r-xp 00000000 08:05 3149398                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7ffa6f112000-7ffa6f311000 ---p 00015000 08:05 3149398                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7ffa6f311000-7ffa6f312000 r--p 00014000 08:05 3149398                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7ffa6f312000-7ffa6f313000 rw-p 00015000 08:05 3149398                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7ffa6f313000-7ffa6f4c8000 r-xp 00000000 08:05 3153563                    /lib/x86_64-linux-gnu/libc-2.15.so
7ffa6f4c8000-7ffa6f6c7000 ---p 001b5000 08:05 3153563                    /lib/x86_64-linux-gnu/libc-2.15.so
7ffa6f6c7000-7ffa6f6cb000 r--p 001b4000 08:05 3153563                    /lib/x86_64-linux-gnu/libc-2.15.so
7ffa6f6cb000-7ffa6f6cd000 rw-p 001b8000 08:05 3153563                    /lib/x86_64-linux-gnu/libc-2.15.so
7ffa6f6cd000-7ffa6f6d2000 rw-p 00000000 00:00 0
7ffa6f6d2000-7ffa6f6f4000 r-xp 00000000 08:05 3158930                    /lib/x86_64-linux-gnu/ld-2.15.so
7ffa6f8df000-7ffa6f8e2000 rw-p 00000000 00:00 0
7ffa6f8ef000-7ffa6f8f4000 rw-p 00000000 00:00 0
7ffa6f8f4000-7ffa6f8f5000 r--p 00022000 08:05 3158930                    /lib/x86_64-linux-gnu/ld-2.15.so
7ffa6f8f5000-7ffa6f8f7000 rw-p 00023000 08:05 3158930                    /lib/x86_64-linux-gnu/ld-2.15.so
7fff31dee000-7fff31e0f000 rw-p 00000000 00:00 0                          [stack]
7fff31e7d000-7fff31e7e000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]
중지됨 (core dumped)
****************************************************************************************************************


  Hit : 4238     Date : 2013/01/15 11:08



    
expl0it 리눅스 버전을 높은 버전을 쓰심에 따라 stack smashing이 발생 시 그것에 대한 정보를 주고 프로그램을 종료 시키는게 아닐까요 2013/01/16  
kimthon 12345는 패스워드하고 int값을 넘어서 오버플로우하니까 그런것 같아요 2013/01/16