首页 > 试题广场 >

以下哪些函数容易造成缓冲区溢出?

[不定项选择题]
以下容易造成缓冲区溢出的函数是()
  • strcpy
  • strncat
  • sprintf
  • strcmp
A. strcpy     没限制长度可能导致溢出(安全版本strncpy)
B. strncat    限制了copy的长度就没问题,strcat可能导致溢出
C. sprintf     和printf()一样,有格式化字符串攻击的可能
D. strcmp    比较两个string长度,无危害
发表于 2020-09-01 20:35:31 回复(7)

  1. strcpy() :函数将源字符串复制到缓冲区。没有指定要复制字符的具体数目!如果源字符串碰巧来自用户输入,且没有专门限制其大小,则有可能会造成缓冲区溢出!
  2. strcat() :函数非常类似于 strcpy(),它可以将一个字符串合并到缓冲区末尾。
  3. sprintf()、vsprintf() : 用来格式化文本和将其存入缓冲区的通用函数

        可以看出来在对缓冲区进行写操作的时候都有可能导致内存溢出。

发表于 2019-03-20 09:21:09 回复(5)
一脸茫然,,,
发表于 2020-11-03 19:11:33 回复(0)
只能说眼睛瞎没看见B选项的n
发表于 2022-10-18 22:57:53 回复(0)
b是strncat,有n的限制,如果是strcat就可能会溢出
发表于 2022-09-25 16:51:36 回复(0)
A:后串复制替换前串,长串替换短串可能导致溢出;
B:后串拼接到前串后,规定前串必须有容纳后串的空间,所以不会导致溢出;
C:输出很容易导致溢出;
D:比较不会溢出。

发表于 2022-01-23 22:03:53 回复(0)
发表于 2021-11-03 19:14:58 回复(3)
strcpy:字符串从源拷贝到缓冲区,可能会发生溢出
strncat:
sprintf:向缓冲区写入,可能会溢出
strcmp:两个字符串比较,一般无危害
发表于 2021-03-25 09:27:55 回复(0)
感觉这题答案有点争议,

char *strncat (char* dest,const char* src, const size_t n);

如果dest的内存空间不够大也会导致数组越界,n毕竟是人为定的,就像程序员决定什么时候释放内存一样,脑子写热了总会有出错的时候
发表于 2024-01-08 18:53:18 回复(0)
sprintf()、vsprintf() : 用来格式化文本和将其存入缓冲区的通用函数
发表于 2022-09-29 19:00:59 回复(0)
A. strcpy     没限制长度可能导致溢出(安全版本strncpy)
B. strncat    限制了copy的长度就没问题,strcat可能导致溢出
C. sprintf     和printf()一样,有格式化字符串攻击的可能
D. strcmp    比较两个string长度,无危害
发表于 2022-06-13 11:01:42 回复(0)
<p>重点是指没指定 追加或者复制的 字符的个数</p><p><br></p><p><br></p>
发表于 2020-09-01 10:54:38 回复(0)