两个人做人爱视频免费,97久久精品人人搡人妻人人玩,欧洲精品码一区二区三区,999zyz玖玖资源站永久

經典c語言面試題

  1.gets()函數

  問:請找出下面代碼里的問題:

  #include

  int main(void)

  {

  char buff[10];

  memset(buff,0,sizeof(buff));

  gets(buff);

  printf(" The buffer entered is [%s] ",buff);

  return 0;

  }

  答:上面代碼里的問題在于函數gets()的使用,這個函數從stdin接收一個字符串而不檢查它所復制的緩存的容積,這可能會導致緩存溢出。這里推薦使用標準函數fgets()代替。

  2.strcpy()函數

  問:下面是一個簡單的密碼保護功能,你能在不知道密碼的情況下將其破解嗎?

  #include

  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(" Password cracked ");

  }

  else

  {

  printf(" Incorrect passwd ");

  }

  return 0;

  }

  答:破解上述加密的關鍵在于利用攻破strcpy()函數的漏洞。所以用戶在向“passwd”緩存輸入隨機密碼的時候并沒有提前檢查 “passwd”的容量是否足夠。所以,如果用戶輸入一個足夠造成緩存溢出并且重寫“flag”變量默認值所存在位置的內存的長“密碼”,即使這個密碼無法通過驗證,flag驗證位也變成了非零。

本文已影響6827
上一篇:軟件工程師面試題 下一篇:成本會計常見面試問題

相關文章推薦

|||||

主站蜘蛛池模板: 揭西县| 华蓥市| 万州区| 盐津县| 张家口市| 册亨县| 福安市| 东乌珠穆沁旗| 武宣县| 惠东县| 阿勒泰市| 永城市| 新闻| 林西县| 田阳县| 乡宁县| 邵东县| 沙河市| 顺昌县| 谷城县| 论坛| 出国| 紫阳县| 东阳市| 齐齐哈尔市| 弥勒县| 长岛县| 临清市| 方山县| 阿巴嘎旗| 勃利县| 库伦旗| 光山县| 甘孜县| 广南县| 泾源县| 武宣县| 天门市| 巍山| 出国| 阳信县|