缓冲区溢出通常是向数组中写数据时,写入的数据的长度超出了数组原始定义的大小。比如前面你定义了intbuff[10],那么只有buff[0]-buff[9]的空间是我们定义buff时申请的合法空间,但后来往里面写入数据时出现了buff[12]=0x10则越界了。C语言常用的strcpy、sprintf、strcat等函数都非常容易导致缓冲区溢出问题。查阅C语言编程的书籍时通常会告诉你程序溢出后会发生不可预料的结果。在网络安全领域,缓冲区溢出利用的艺术在于让这个“不可预料的结果”变为我们期望的结果。