1.核心理念
- 所谓缓冲区溢出攻击,就是一种利用目标程序的缓冲区溢出漏洞,通过操作目标程序堆栈并暴力改写其返回地址,从而获得目标控制权的攻击手段。
2.英文名称
- buffer overflow
- buffer overrun
- smash the stack
- trash the stack
- scribble the stack
- mangle the stack
- memory leak
- overrun screw
3.分类
- 栈溢出
- 堆溢出
- 数组索引错误
- 格式化字符串bug
- Unicode( 统一字符串编码标准)和ANSI( 美国国家标准协会)之间缓冲区大小不匹配
4.保护方法
- 软件开发阶段
— 强制写正确的代码。
— 避免使用非全的c 函数。如gets()、strcpy()
— 采用非可执行堆栈技术。
— 数组边界检查,如检查字符串的零结尾。
— 指针完整性检查,在程序指针被引用之前检测到其改变。 - 编译检查阶段
— 静态测试工具
— 动态测试工具 - 安全配置使用阶段
— 隐藏系统信息
— 关闭不需要的服务
— 最小权限原则