今天读了李毅超、刘丹等的《缓冲区溢出漏洞研究与进展》一文,这篇文章发表在计算机科学这个核心期刊上,其实是一篇综述,但是文章写的比较好。现在做一下这篇文章的笔记。
一、缓冲区溢出攻击的原理
缓冲区溢出是指当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量溢出的数据覆盖在合法数据上。
当调用函数copy()后,参数、返回地址、前一个栈的指针、本地变量被依次压入栈中。箭头知名堆栈和内存的增长方向。
函数strcpy()将输入复制到buffer()。由于strcpy()不检查输入变量的边界,当它向buffer()赋值的字符多于512个,输入字符就可能覆盖堆栈中的返回地址并使其指向攻击代码。当程序从copy()返回到main()时,攻击代码被执行。
2、本地指针溢出攻击