信息安全综合实验

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
– 202.38.64.10/11都设置了
能杜绝绝大部分,但不是所有缓冲区溢出 攻击
Linux在以下情况下栈必须可执行:
– Signal – gcc在线重用
15
防范缓冲区攻击的普遍方法
关闭不需要端口和服务 安装最新的补丁 检查关键程序 以最小的权限运行软件
– 不使用root身份来运行apache,named等
Buffer overflow attack 缓冲区溢出攻击
– 缓冲区溢出漏洞大量存在于各种软件中 – 利用缓冲区溢出的攻击,会导致系统当机,
获得系统特权等严重后果。
最早的攻击1988年UNIX下的Morris worm 最近的攻击
– Codered 利用IIS漏洞 – SQL Server Worm 利用SQL Server漏洞 – Blaster 利用RPC漏洞
4
缓冲区溢出攻击原理
类似函数有strcat、sprintf、vsprintf、gets、 scanf等
一般溢出会造成程序读/写或执行非法内 存的数据,引发segmentation fault异常退 出.
如果在一个suid程序中特意构造内容,可 以有目的的执行程序,如/bin/sh,得到 root权限。
16
实验内容
实验一提示:
– ./width1 65536 adfad – 65536 复制给 s后变成 0
17
5
缓冲区溢出攻击原理
对于使用C语言开发的软件,缓冲区溢出 大部分是数组越界或指针非法引用造成的。
有时并不引发溢出也能进行攻击。 现存的软件中可能存在缓冲区溢出攻击,
因此缓冲区溢出攻击短期内不可能杜绝。 缓冲区溢出的危害很大:
– 可以植入并运行攻击代码 – 比大部分DoS攻击危害严重
6
缓冲区溢出攻击要素
10
控制程序转移到攻击代码的方 法
函数指针
– 如果定义有函数指针,溢出函数指针前面的 缓冲区,修改函数指针的内容
11
控制程序转移到攻击代码的方 法
长跳转缓冲区 longjmp buffers
– Setjmp/longjmp语句 – 覆盖setjmp/longjmp的缓冲区内容
12
常见的攻击技术
在进程的地址空间安排适当的代码 通过适当的初始化寄存器和内存,跳转到
以上代码段执行
7
安排代码的方法
利用进程中存在的代码
– 传递一个适当的参数 – 如程序中有exec(arg),只要把arg指向
“/bin/sh”就可以了
植入法
– 把指令序列放到缓冲区中 – 堆、栈、数据段都可以存放攻击代码,最常
信息安全综合实验
张焕杰 中国科学技术大学网络信息中心
james@ustc.edu.cn http://202.38.64.40/~james/nms
Tel: 3601897(O)
1
第四章 缓冲区溢出
课程目的
– 学习缓冲区溢出攻击的基本概念和原理 – 掌握预防和防御缓冲区溢出攻击的方法
2Βιβλιοθήκη Baidu
缓冲区溢出攻击
一个字符串中完成代码植入和跳转
– 一般修改活动记录
13
缓冲区溢出攻击的避免
缓冲区不可执行
– 植入的攻击代码无法执行,不能产生大的危 害
编写正确的代码 编译器进行类型、边界检查,实现缓冲区
的保护
– java
运行时(Runtime)指针、边界检查
14
缓冲区不可执行
Linux/Solaris都可以设置
见的是利用栈
8
Stack Heap
Data Text
内存
段属性
High – Text: E – Data:R/W – Stack:R/W/E
栈需要E属性
– Signal Handling – Trampoline code
Low 9
控制程序转移到攻击代码的方 法
利用活动记录
– 溢出栈中的局部变量,使返回地址指向攻击 代码 栈溢出攻击 Stack Smashing Attack
3
缓冲区溢出攻击原理
向缓冲区写入超过缓冲区长度的内容,造成缓 冲区溢出,破坏程序的堆栈,使程序转而执行 其他的指令,达到攻击的目的。
原因:程序中缺少错误检测: void func(char *str) {
char buf[16]; strcpy(buf,str); } 如果str的内容多于16个非0字符,就会造成buf的 溢出,使程序出错。
相关文档
最新文档