基于缓冲区溢出的攻击实验报告
一、实验名称:基于缓冲区溢出的攻击 二、实验目的: 1.学习并掌握缓冲区溢出的基本原理 2.学习缓冲区溢出攻击利用的技术 三、概念与原理 1.缓冲区溢出是指当计算机向缓冲区内填充数据位数时超过了缓冲区
一、实验名称:基于缓冲区溢出的攻击 二、实验目的: 1.学习并掌握缓冲区溢出的基本原理 2.学习缓冲区溢出攻击利用的技术 三、概念与原理 1.缓冲区溢出是指当计算机向缓冲区内填充数据位数时超过了缓冲区本身的 容量溢出的数据覆盖在合法数据上,理想的情况是程序检查数据长度并不允许输入 超过缓冲区长度的字符,但是绝大多数程序都会假设数据长度总是与所分配的储存 空间想匹配,这就为缓冲区溢出埋下隐患.操作系统所使用的缓冲区又被称为"堆栈 ".在各个操作进程之间,指令会被临时储存在"堆栈"当中,"堆栈"也会出现缓冲区 溢出。 2.通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程 序的堆栈,使程序转而执行其它指令,以达到攻击的目的。造成缓冲区溢出的原因是 程序中没有仔细检查用户输入的参数。例如下面程序: voidfunction(char*str){ charbuffer[16]; strcpy(buffer,str); } 上面的strcpy()将直接吧str中的内容copy到buffer中。这样只要str的 长度大于16,就会造成buffer的溢出,使程序运行出错。存在象strcpy这样的问 题的标准函数还有strcat(),sprintf(),vsprintf(),gets(),scanf()等。

