閱讀下列說明,回答問題 1 至問題 4 ,將解答寫在答題紙的對 應(yīng)欄內(nèi)。 
【說明】 
基于 Windows32 位系統(tǒng)分析下列代碼,回答相關(guān)問題 。 
void Challenge(char *str) 
{ 
char temp[9]={0}; 
strncpy(temp,str,8); 
printf("temp=%s\n",temp); 
if(strcmp(temp"Please!@")==0){ 
printf("KEY: ****"); 
} 
} 
int main(int argc,char *argv[ ]) 
{ 
Char buf2[16] 
Int check=1; 
Char buf[8] 
Strcpy (buf2, "give me key! !"); 
strcpy(buf,argv[1]); 
if(check==65) { 
Challenge(buf); 
} 
else { 
printf("Check is not 65 (%d) \n Program terminated!!\n",check); 
} 
Return 0; 
} 
【問題 1】(3 分) 
main 函數(shù)內(nèi)的三個本地變量所在的內(nèi)存區(qū)域稱為什么?它的兩個最基本操作是什么? 
【問題 2】(3分) 
畫出buf,check,buf2 三個變量在內(nèi)存的布局圖。 
【問題 3】(2分) 
應(yīng)該給程序提供什么樣的命令行參數(shù)值(通過argv變量傳遞)才能使程序執(zhí)行流程進入判斷語句 If(check=65)....然后調(diào)用challenge( )函數(shù)。 
【問題4】(4分) 
上述代碼所存在的漏洞名字是什么,針對本例代碼,請簡要說明如何修正上述代碼以修補次漏洞。
											
 查看答案
                                        查看答案
                                    


