我试图通过使用下面的代码来触发缓冲区溢出,以便更好地理解漏洞。
我有某些字段,有些指定了宽度以尝试防止溢出,但我在一种情况下(firstName)将其省略以使溢出成为可能:
char firstName[21], surName[31], job[16];
printf("Enter first name: ");
scanf("%s", firstName);
printf("Enter surname: ");
scanf("%30s", surName);
printf("Enter job name : ");
scanf("%15s", job);
所以现在当我输入以下内容时:
UmbertoTestingOverflow
Example
Janitor
记录的变量显示为:
UmbertoTestingOverfoExample
Example
Janitor
根据我对缓冲区溢出的理解,名字中的额外字符应该已经跑到另一个字段中,但在这种情况下,它已经从另一个变量中获取用户输入并将其添加到名字中。那么这是缓冲区溢出行为还是其他原因导致的?