2014-10-27 32 views
-3

什麼vulnerabilty在此代碼,請有人解釋我這個代碼C++ BOF漏洞請有人解釋

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

int main(int arc, char* argv[]) 
{ 
    char buff[50]; 
    strcpy(buffer, argv[1]); 
    printf("You are string: %s", buff); 
    return 0; 
} 
+1

想象着你的參數超過49個字符長調用該程序。怎麼了? – 2014-10-27 08:05:07

+1

'的strcpy(緩衝液,的argv [1]);'也應該閱讀'的strcpy(淺黃色,argv的[1]);' – Lionel 2014-10-27 09:21:01

回答

1

argv[1]可能不存在,或者它可能是超過50個字符=>問題。
解決方法:檢查argc >=2strlen(argv[1])<50

否則,你的程序未定義的行爲,
意味着它可以做一些奇怪和意外。
此外,惡意的人也許可以注入自己的代碼

+0

如何修補此 – mans 2014-10-27 08:21:06

+1

的解決方案是已經在答案。你知道如何做一個條件? – deviantfan 2014-10-27 08:22:37