- 安全测试教程
- 安全测试 - 主页
- 安全测试 - 概述
- 安全测试 - 流程
- 安全测试-恶意软件
- HTTP 协议基础知识
- HTTPS 协议基础知识
- 编码与解码
- 安全测试-密码学
- 安全测试 - 同源策略
- 安全测试 - Cookie
- 黑客网络应用程序
- 安全测试-注入
- 测试损坏的身份验证
- 测试跨站脚本
- 不安全的直接对象引用
- 测试安全配置错误
- 测试敏感数据暴露
- 缺少功能级别访问控制
- 跨站请求伪造
- 有漏洞的组件
- 未经验证的重定向和转发
- 安全测试 - Ajax 安全
- 测试安全性 - Web 服务
- 安全测试 - 缓冲区溢出
- 安全测试 - 拒绝服务
- 测试恶意文件执行
- 安全测试 - 自动化工具
- 安全测试有用的资源
- 安全测试 - 快速指南
- 安全测试 - 有用的资源
- 安全测试 - 讨论
安全测试 - 缓冲区溢出
当程序试图在临时数据存储区域(缓冲区)中存储比预期容纳的数据更多的数据时,就会出现缓冲区溢出。由于缓冲区被创建为包含有限数量的数据,因此额外的信息可能会溢出到相邻的缓冲区中,从而破坏其中保存的有效数据。
例子
这是缓冲区溢出的经典示例。它演示了由第一个场景引起的简单缓冲区溢出,其中依赖外部数据来控制其Behave。无法限制用户输入的数据量,程序的Behave取决于用户输入的字符数量。
... char bufr[BUFSIZE]; gets(bufr); ...
动手
步骤 1 - 我们需要使用姓名和房间号登录才能访问互联网。这是场景快照。
步骤 2 - 我们还将在 Burp Suite 中启用“取消隐藏隐藏表单字段”,如下所示 -
步骤 3 - 现在我们在名称和房间号字段中发送输入。我们还尝试在房间号字段中注入一个相当大的数字。
步骤 4 - 显示隐藏字段,如下所示。我们点击接受条款。
步骤 5 - 攻击成功,由于缓冲区溢出,它开始读取相邻的内存位置并向用户显示,如下所示。
步骤 6 - 现在让我们使用显示的数据登录。记录后,将显示以下消息 -
预防机制
- 代码审查
- 开发者培训
- 编译工具
- 开发安全功能
- 定期扫描