前言
由于C语言对于数组引用不进行任何边界检查,数组引用函数get,strcpy,strcat等也未在函数中对数组越界进行合理进行判断,应用程序很容易产生缓冲区溢出的错误。缓冲区溢出不仅对应用程序使用造成影响,一些恶意的脚本程序利用程序缓冲区溢出威胁着系统安全。
从汇编角度理解缓冲区溢出
通常,在栈中分配某个字节数组来保存一个字符串,但是字符串的长度超出了数组分配的空间。
gets的问题是它没有办法确定是否为保存整个字符串分配了足够的空间。在echo实例中,将缓冲区设得非常小——只有8字节长。任何长度超过7字节的字符串都会导致写越界。