向有限的空间输入超长的字符串是缓冲区溢出攻击手段。缓冲区溢出(buffer overflow)指当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量,使得溢出的数据覆盖在合法数据上。
缓冲区溢出是一种非常普遍、非常危险的漏洞,在各种操作系统、应用软件中广泛存在;利用缓冲区溢出攻击,可以导致程序运行失败、系统宕机、重新启动等后果;可以利用它执行非授权指令,取得系统特权,进而进行各种非法操作。
缓冲区溢出理想的情况是程序检查数据长度并不允许输入超过缓冲区长度的字符,但是绝大多数程序都会假设数据长度总是与所分配的储存空间相匹配,这就为缓冲区溢出埋下隐患。操作系统所使用的缓冲区又被称为“堆栈”。在各个操作进程之间,指令会被临时储存在堆栈当中,堆栈也会出现缓冲区溢出。