2013-04-18 5 views
1

버퍼 오버 플로우 취약점이있는 C 프로그램이 있습니다. 우리는 우리의 방식대로 프로그램을 작동시켜야합니다. 내 이해에 따라 버퍼 오버플로가 다음 메모리 위치를 덮어 씁니다. 다음 코드를 살펴보면 암호가 goodpassword이면 프로그램이 액세스를 허용합니다. 버퍼 오버플로 취약점을 악용하여 aaaaaaaaaaaaaaaaaaaaaaaa (24a 's)로 입력하면 다음 메모리 위치를 겹쳐 쓰면서 프로그램이 입력을 허용합니다. 액세스 권한 부여.버퍼 오버 플로우 악용

그러나 프로그램이 중단되고 결함을 악용 할 수 없다고 생각하면 작동하지 않습니다. 제 접근법에서 무엇이 잘못되었는지 알려주십시오.

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

int IsPasswordOk() { 
    char password[13]; 
    gets(password); 
    if(!strcmp(password,"goodpassword")) 
     return 1; 
    else 
     return 0; 
} 

int main(int argc, char* argv[]) { 
    int pwdStatus; 
    puts("Enter password"); 
    pwdStatus = IsPasswordOk(); 
    if(!pwdStatus) { 
     puts("Access denied!"); 
     return -1; 
    } 
    else puts("Access granted!"); 

    return 0; 
} 
+0

Errr ... ** 웹 ** 보안 ?! 에서와 마찬가지로, 그것은 보안에 관한 것이고, 웹에서 그것에 대해 들어 보셨습니까? –

+0

이 프로그램은 웹과 관련된 보안 문제로 생각되는 버퍼 오버 플로우 공격을 찾습니다. – prashanth

답변

0

오버 플로우가 항상 유효한 위치를 가리킬 필요는 없습니다. 다음 위치가 다음 페이지에 위치 할 수 있으며이 위치에 대한 액세스 권한이없는 시나리오를 가정하십시오. 그것은 OS 배포판이 상황을 어떻게 처리 할 수 ​​있는지에 달려 있습니다.

관련 문제