2013-04-18 263 views
1

我遇到了一個C程序,它有一個緩衝區溢出漏洞。我們需要讓程序按照我們的方式工作。根據我的理解溢出緩衝區將覆蓋下一個內存位置。如果我們考慮下面的代碼,如果密碼是goodpassword,程序將授予訪問權限。我想利用緩衝區溢出缺陷並給出輸入爲aaaaaaaaaaaaaaaaaaaaaaaa(24 a'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

錯誤... ** web **安全性?就像在這裏,這是關於安全性的東西,你在網絡上聽說過它? –

+0

該程序尋找緩衝區溢出漏洞,我認爲這是一個有關web的安全問題。 – prashanth

回答

0

溢出不需要總是指向有效位置。假設下一個位置可能位於下一頁並且您無權訪問它的情況。這取決於您的操作系統發行版如何處理這種情況。