什麼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;
}
什麼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;
}
argv[1]
可能不存在,或者它可能是超過50個字符=>問題。
解決方法:檢查argc >=2
和strlen(argv[1])<50
否則,你的程序未定義的行爲,
意味着它可以做一些奇怪和意外。
此外,惡意的人也許可以注入自己的代碼
如何修補此 – mans 2014-10-27 08:21:06
的解決方案是已經在答案。你知道如何做一個條件? – deviantfan 2014-10-27 08:22:37
想象着你的參數超過49個字符長調用該程序。怎麼了? – 2014-10-27 08:05:07
'的strcpy(緩衝液,的argv [1]);'也應該閱讀'的strcpy(淺黃色,argv的[1]);' – Lionel 2014-10-27 09:21:01