缓冲区溢出
来源:互联网 发布:mac迅雷下载速度0 编辑:程序博客网 时间:2024/05/29 16:33
缓冲区溢出指:在栈中分配某个字节组来保存一个字符串,但是字符串的长度超过了为它分配的空间
缓冲区溢出的危害:
- 破坏栈中保存的寄存器的值
- 破坏了栈中存储的返回地址,那么ret指令会使程序跳转到完全意想不到的地方
- 可能让程序执行它本来不愿意执行的函数(输入攻击代码)
对抗缓冲区溢出攻击的方法:
- 栈随机化---过去的栈的位置是相当固定的,程序的栈地址非常容易预测到。如果攻击者可以确定一个常见的服务器所使用的栈空间,就可以设计一个在许多机器上都能实施的攻击。栈随机化就是使得栈的位置在程序每次运行的时候都有变化。即使许多机器运行同样的代码,它们的栈地址都是不同的。实现的方法:在程序开始时,在栈上随机分配0~n个字节的空间,这样程序执行的时候栈的位置就会发生变化
- 栈破坏检测--在栈中任何局部缓冲区与栈状态之间存储一个特殊的哨兵值,它由程序运行时随机产生,因此攻击者没有简单的方法知道它的值,在恢复寄存器状态和从函数返回之前,程序检测哨兵值有没有被破坏,如果是则终止程序
- 限制课执行代码区域--将栈中某些地方标记为不可执行
0 0
- 缓冲区溢出
- 缓冲区溢出
- 缓冲区溢出
- 缓冲区溢出
- 缓冲区溢出
- 缓冲区溢出
- 缓冲区溢出
- 缓冲区溢出
- 缓冲区溢出
- 缓冲区溢出
- 缓冲区溢出
- 缓冲区溢出
- 缓冲区溢出
- 缓冲区溢出
- 缓冲区溢出
- 缓冲区溢出
- 缓冲区溢出
- 缓冲区溢出
- Android UI之控件组件遵循2+1原则
- [LeetCode] Merge Intervals
- mysql连接报错"Too many connections"
- shell 的几个数据处理命令 管道命令
- 欢迎使用CSDN-markdown编辑器
- 缓冲区溢出
- MapValue排序
- 排序方法总结
- 阿里2016笔试题-棋盘问题 求路径的种数
- gcc连接文件error: /usr/lib64/libstdc++.so.6: version 'GLIBCXX_3.X.XX‘ not found
- 第十五届全国青少年信息学奥林匹克联赛初赛试题
- 线性表之单链表
- Lucene3.0之结果排序(原理篇)
- writing .NET applications, which language to use?