由于错误的数据类型导致缓冲区溢出

信息安全 缓冲区溢出
2021-09-12 00:25:20

我正在阅读有关缓冲区溢出的OWASP 页面。它提到:

使用强类型的高级编程语言可以防止缓冲区溢出

开发人员应验证输入以防止处理意外数据,例如错误的数据类型

当不正确的数据类型可能导致缓冲区溢出时,有人可以举个例子吗?

1个回答

以下是一些 C/C++ 示例:

  • 将 long 读入 int 内存空间(例如使用 scanf)。

    int i;
    scanf("%ld", &i);
    
  • 使用浮点数作为 for 循环中的索引而不是定点结构,可能导致迭代次数多于或少于预期。

    char *arr = new char[9];
    for(float j=1; j>0; j=j-0.1) { // will clobber 10 characters, not 9
        *arr++ = 'A';
    
  • 在具有不同类型宽度的数组之间复制

    float floatArr[10] = { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
    char charArr[10];
    memcpy(charArr, floatArr, sizeof(float));