安全漏洞,通過使緩衝區溢出,我們可以覆蓋其中標誌值0被保存,所以甚至不正確的密碼會破解密碼的記憶..關於strcpy的
這將如何在內部發生的呢?有人可以請詳細解釋..實際上這將如何發生在記憶中?
#include<stdio.h>
int main(int argc, char *argv[])
{
int flag = 0;
char passwd[10];
memset(passwd,0,sizeof(passwd));
strcpy(passwd, argv[1]);
if(0 == strcmp("LinuxGeek", passwd))
{
flag = 1;
}
if(flag)
{
printf("\n Password cracked \n");
}
else
{
printf("\n Incorrect passwd \n");
}
return 0;
}
不那麼相關:在strcpy()之前,您不需要將memset設置爲零。 – moeCake