没有合适的资源?快使用搜索试试~ 我知道了~
物联网安全课设 - 缓冲区溢出漏洞
需积分: 0 0 下载量 129 浏览量
2022-12-19
17:15:49
上传
评论
收藏 149KB DOCX 举报
温馨提示
试读
12页
课设做的报告,记录一下,粘贴来的
资源推荐
资源详情
资源评论
第一章 引言
缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况。这
一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段。
缓冲区溢出攻击是利用缓冲区溢出漏洞所进行的攻击行动。缓冲区溢出是一
种非常普遍、非常危险的漏洞,在各种操作系统、应用软件中广泛存在。利用缓
冲区溢出攻击,可以导致程序运行失败、系统关机、重新启动等后果。
第二章 组员分工情况
负责资料搜集和部分代码
负责实验整体架构及部分代码
负责防范措施及本次实验总结
负责实验原理的学习及总结攻击原因
第三章 攻击原理及危害
3.1. 攻击原理
图 1 程序在内存中的存储
程序在运行时,由操作系统将可执行文件载入到计算机的内存中,成为一个进程。程序
进程被创建时,系统就会为其分配内存空间。
1. 未初始化数据段 bss 段:
bss 段通常是指用来存放程序中未初始化的全局变量的一块内存区域。
bss 段属于静态内存分配。
2. 已初始化数据段 data 段:
data 段通常是指用来存放程序中已初始化的全局变量的一块内存区域。
数据段属于静态内存分配。
3. 代码段:
代码段通常是指用来存放程序执行代码的一块内存区域。这部分区域的大小在程序运
行前就已经确定,并且内存区域通常属于只读(某些架构也允许代码段为可写)。
4. 堆(heap):
堆用于存放进程运行中被动态分配的内存段,它的大小并不固定,可动态扩张或缩减。
当进程调用 malloc 等函数分配内存时,新分配的内存就被动态添加到堆上(堆被扩张);
当利用 free 等函数释放内存时,被释放的内存从堆中被剔除(堆被缩减)。
5. 栈(stack):
栈是用户存放程序临时创建的局部变量。在函数被调用时,其参数也会被压入发起调
用的进程栈中,并且待到调用结束后,函数的返回值也会被存放回栈中。由于栈的先进后出
特点,所以栈特别方便用来保存/恢复调用现场。
通常所说的缓冲区溢出指的就是“堆栈和堆”这两部分空间中产生了溢出。正如微软给
缓冲区溢出所下定义中所说的,缓冲区溢出是因为人们向程序中提交的数据超出了数据接收
区所能容纳的最大长度,从而使提交的数据超过相应的边界而进入了其他区域。如果是人为
蓄意提交超长数据且对系统正常运行造成了不良影响,那么我们就说发生了缓冲区溢出攻击。
利用缓冲区溢出进行的攻击其基本的思想是通过修改某些内存区域,把一段恶意代码存
储到一个 buffer 中,并且使这个 buffer 被溢出,以便当前进程被非法利用(执行这段恶意的
代码)
3.2. 危害
缓冲区溢出攻击通常会带来以下后果:
1、过长的宇符串覆盖了相邻的存储单元而造成程序异常,严重的会造成死机、系统或进程
重启等;
2、可让攻击者执行恶意代码或特定指令,甚至获得超级权限等,从而引发其他的攻击。
第四章 造成攻击的技术原因
4.1. 缺少边界检查
较明显的是 C 和 C++语言。由于一开始设计的时候 C 和 C++就没有为数组和宇符指针的
引用提供任何的边界检查机制,从而导致了它们的不安全性。
4.2. 操作系统设计缺陷
这方而主要是指堆栈和堆数据区的可执行性属性。UNIX 和 MS Windows 系统为实现更
好的性能和功能,往往在数据段中动态地放入可执行的代码,以保持程序的兼容性,使堆栈
和堆具有可执行的属性。但从两者用途本质存储数据来看,赋予堆栈和堆可执行的属性是不
必要的。而且堆栈和堆作为程序与用户交互的窗口,赋予其可执行的权力对系统安全构成了
威肋。
第五章 攻击类型
5.1. 栈溢出
5.1.1. 输入数据超出范围
#include <stdio.h>
#include <string.h>
int main(void)
{
char buff[8] = {0};
char *p = "0123456789";
strcpy(buff,p);
printf("%s\n",buff);
return 0;
}
结果如下:
5.1.2. 函数递归层次过深
函数调用的本质是:入栈(push)和出栈(pop),递归中每一次调用函数时,都会入栈保
存一个栈帧,里面保存着该函数的调用信息、内部变量,这样栈空间总有被占完的时候
#include <stdio.h>
#include <string.h>
int Fun(int n)
{
if (n == 1)
return 1;
else
return n + Fun(n - 1);
}
int main()
{
printf("%d\n", Fun(100000));
return 0;
}
剩余11页未读,继续阅读
资源评论
啾啾啾wu
- 粉丝: 4
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 本科毕业设计基于C# wpf人脸识别的考勤系统的设计与实现源码.zip
- 基于Ruoyi+uniapp实现学生考勤系统 学生考勤源码+项目说明.zip
- feae6bc968ca68a099455d8b8a8dea35
- 基于Pytorch训练CIRAR10上分类算法.zip
- Pytorch-pytorch深度学习教程之Tensorboard.zip
- 基于C++和Python开发yolov8-face作为人脸检测器dlib作为人脸识别器的人脸考勤系统源码+项目说明.zip
- Pytorch-pytorch深度学习教程之变分自动编码器.zip
- Pytorch-pytorch深度学习教程之神经风格迁移.zip
- Pytorch-pytorch深度学习教程之深度残差网络.zip
- Pytorch-pytorch深度学习教程之循环神经网络.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功