栈溢出实验报告_第1页
栈溢出实验报告_第2页
栈溢出实验报告_第3页
栈溢出实验报告_第4页
栈溢出实验报告_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 / 14 栈溢出实验报告 华中科技大学计算机学院 信息系统应用安全实验报告 实验名称 团队成员: 注:团队成员贡献百分比之和为 1 教师评语: 一 .实验环境 ? 操作系统: windows xp sp3 ? 编译平台: visual c+ ? 调试环境: ollydbg 二 .实验目的 1. 掌握缓冲区溢出的原理; 2. 掌握缓冲区溢出漏洞的利用技巧; 3. 理解缓冲区溢出漏洞的防范措施。 三 .实验内容及步骤 1. 缓 冲区溢出漏洞产生的的基本原理和攻击方法 ? 缓冲区溢出模拟程序 由于拷贝字符串时产生缓冲区溢出,用“ abcd”字符串的值覆盖了原来 eip的值,所以 main 函数返回时 eip 指向 44434241,引发访问异常。 ? 运行命令窗口的 shellcode 由于把 main函数的返回eip地址替换成了 jmp esp的地址, main函数返回的时候就会执行我们的 shellcode 代码。该 shellcode,运行命令窗口。 2. ms06-040 缓冲区溢出漏洞分析和利用 ? 溢出点定位 篇二:缓冲 区溢出实验报告 缓 2 / 14 冲 区 溢 出 报 告 院系:计算机与通信工程学院班级:信息安全10-02班 1. 实验目的 掌握缓冲区溢出的原理掌握常用的缓冲区溢出方法理解缓冲区溢出的危害性 掌握防范和避免缓冲区溢出攻击的方法 2. 实验工具 溢出对象: ccproxy 调试工具: 使用 vmware 虚拟机,安装进行实验调试。 3. 实 验步骤 了解 ccproxy 代理服务器为大家解决了很多问题,比如阻挡黑客攻击和局域网共享上网等。 ? 国内非 常受欢迎的一款代理服务器软件 ? 设置简单,使用方便 3 / 14 关于缓冲区溢出漏洞说明 ccproxy 在代理 telnet 协议时,可以接受 ping 命令 ping 命令格式: ping hostnamern 当 hostname 的长度大于或者等于 1010 字节时, ccproxy 会发生缓冲区溢出,导致 程序崩溃 ccproxy 缓冲区溢出漏洞演示 在 目标主机运行 ccproxy,使用默认设置 运行 ccproxy的机器 ip是 使用 telnet 命令连接 ccproxy:telnet 23 返回信息: 输入 ping命令,后接畸形数据: 在ping命令后接 10 个字符 a,观察返回信息 将字符 a 的数量变为 100 个、 1000 个、 2000个,观察返回信息原理: 如果终端提示“ host not found”,说明 ccproxy 正确地处理了这个畸形数据,仍工作正 常 如果终端提示“失去了跟主机的连接”,表明 ccproxy已经崩溃 ccproxy 缓冲区溢出漏洞利用 如何利用这个漏洞,来实现攻击目的,做一些特别的事情。我们知道,栈是一个后进先出的结构,函数在入栈时,先将返回地址 ret 压入栈,接着 是 ebp 基址寄存器,然后根据局部变量的大小,开辟一定大小的缓冲区,再将局部变量压入。在将局部变量压入栈的时候,如果压入数据过长,大于事先声明的缓冲区大4 / 14 小,就会覆 盖 ebp和 ret。 漏洞的利用有 5 个方面的问题需要考虑。 一是 ret的定位,要用我们的地址覆盖 ret,就需要先知道 ret在哪,也就是我 们定好 的这个地址,应该放在字符串的什么位置。二是要寻找一个跳转指令,将这个指令的地址填充到 ret,这样才能在返回时通过跳转 指令转到其它地方执行程序 三是要构造 shellcode,也就是完成一些特定的功能。 四是将所构造的 shellcode放在跳转指令转向的地方。 最后一个步骤就是根据上面的这些分析过程,将它们整合成攻击程序,运行这个攻击程 序就能直接利用缓冲区溢出漏洞。函数栈布局,栈顶是内存低地址,栈底是内存高地址篇三:数据结构栈和队列实验报告 一、实验目的和要求 理解栈和队列的特征以及它们之间的差异,知道在何时使用那种数据结构。 重点掌握在顺序栈上和链栈上实现栈的基本运算算法,注意栈满和栈空的条件。 重点掌握在顺序队上和链队上实现队列的基本运算5 / 14 算法,注意循环队队列满和队空的 条件。 灵活运用栈和队列这两种数据结构解决一些综合应用问题。 二、实验环境和方法 实验方法: 综合运用课本所学的知识,用不同的算法实现在不同的程序功能。 结合指导老师 的指导,解决程序中的问题,正确解决实际中存在的异常情况,逐 步改善功能。 根据实验内容,编译程序。 实验环境: windows xpvisual c+ 三、实验内容及过程描述实验步骤: 进入 visual c+ 集成环境。 输入自己编好的程序。 检查一遍已输入的程序是否有错,如发现有 错,及时改正。 进行编译和连接。如果在编译和连接过程中发现错误,频幕上会出现“报错信息”,根据提示找到出错位置和原因,加以改正。再进行 编译,如此反复直到不出错为止。 6 / 14 运行程序并分析运行结果是否合理。在运行是要注意当输入不同的数据时所得结果 是否正确,应运行多次,分别检查在不同情况下结果是否正确。 实验内容:编译以下题目的程序并调试运行。 1)、编写一个程序,实现顺 的各种基本运算,并在此基础上设计一程序并完成如下功能: 初始化栈 s; 判断栈 s是否非空; 序栈个主 依次进栈元素 a,b,c,d,e; 判断栈 s是否非空; 输出出栈序列; 判 断栈 s是否非空; 释放栈。 图 proj3_1 工程组成本工程 proj3_1 的组成结构如图所示。本工程的模块结构如图所示。图中方框 表示函数,方框中指出函数名,箭头方向表示函数间的调用关系。 图 proj3_1工程的程序结构图其中包含如下函数: initstack /初始化栈 s destroystack /销毁栈s stackempty /判断栈空 push /进栈 pop /出栈 gettop /取栈顶元素 对应的程序如下: /文件名 :#include #include #define maxsize 100typedef char elemtype;typedef struct 7 / 14 elemtype datamaxsize; int top; /栈顶指针 sqstack; void initstack /初始化栈 s s=malloc); s-top=-1; /栈顶指针置为 -1 void destroystack /销毁栈 s free; bool stackempty /判断栈空 return; bool push /进栈 if /栈满的情况,即栈上溢出 return false; s-top+; /栈顶指针增 1 s-datas-top=e; /元素 e 放在栈顶指针处 return true; bool pop /出栈 if /栈为空的情况,即栈下溢出 return false; e=s-datas-top; /取栈顶指针元素的元素 s-top-;/栈顶指针减 1return true; bool gettop /取栈顶元素 if /栈为空的情况,即栈下溢出 return false; e=s-datas-top; /取栈顶指针元素的元素 8 / 14 return true; 设计程序如下 /文件名 :#include #include #define maxsize 100typedef char elemtype;typedef struct elemtype datamaxsize;int top; /栈顶指针 sqstack; extern void initstack; extern void destroystack; extern bool stackempty; extern bool push; extern bool pop;extern bool gettop; void main elemtype e; sqstack *s; printf; printf 初始化栈 sn);initstack; printf栈为 %sn,?空 :非空 );printf依次进栈元素a,b,c,d,en);push; push; push; push; push; printf 栈为 %sn,?空 :非空 );printf 出栈序列 :);while ) 9 / 14 pop; printf; printf; printf 栈为 %sn,?空 :非空 );printf 释放栈n);destroystack; 运行结果如下: 2)、编写一个程序,实现链栈的各种基本运算,并在此基础上设计一个主 程序并完成如下功能: 初始化链栈 s; 判断链栈 s 是否非空; 依次进栈 a, b, c, d, e; 判断链栈 s 是否非空; 输出链栈长度; 输出从栈底到栈顶元素; 输出出队序列; 判断链栈 s 是否非空;图 proj3_2工程组成 释放队列。 华中科技大学计算机学院 信息系统应用安全实验报告 10 / 14 实验名称 团队成员: 注:团队成员贡献百分比之和为 1 教师评语: 一 .实验环境 ? 操作系统: Windows XP SP3 ? 编译平台: Visual C+ ? 调试环境: OllyDbg 二 .实验目的 1. 掌握缓冲区溢出的原理; 2. 掌握缓冲区溢出漏洞的利用技巧; 3. 理 解缓冲区溢出漏洞的防范措施。 三 .实验内容及步骤 1. 缓冲区溢出漏洞产生的的基本原理和攻击方法 ? 缓冲区溢出模拟程序 由于拷贝字符串时产生缓冲区溢出,用“ ABCD”字符串的值覆盖了原来 EIP 的值,所以 main 函数返回时 EIP指向 44434241,引发访问异常。 ? 运行命令窗口的shellcode 由于把 main函数的返回 EIP地址替换成了 jmp esp的地址, main 函数 返回的时候就会执行我们的 shellcode 代码。该shellcode,运行命令窗口。 2. MS06-040 缓冲区溢出漏洞分析和利用 11 / 14 ? 溢出点定位 缓 冲 区 溢 出 报 告 院系:计算机与通信工程学院 班级:信息安全 10-02班 1. 实验目的 掌握缓冲区溢出的原理 掌握常用的缓冲区溢出方法 理解缓冲区溢出的危害性 掌握防范和避免缓冲区溢出攻击的方法 2. 实验工具 溢出对象: CCProxy 调试工具: 使用 Vmware 虚拟机,安装进行实验调试。 3. 实验步骤 了解 CCProxy 12 / 14 代理服务器为大家解决了很多问题,比如阻挡黑客攻击和局域网共享上网等。 ? 国内非常受欢迎的一款代理服务器软件 ? 设置简单,使用方便 ? 不仅支持常见的 HTTP 和 SOCKS 代理,而且支持FTP/Telnet等这类不常用的协议及其它协议 关于缓 冲区溢出漏洞说明 CCProxy 在代理 Telnet 协议时,可以接受 Ping 命令 Ping命令格式: ping hostnamern 当 hostname 的长度大于或者等于 1010 字节时,CCProxy 会发生缓冲区溢出,导致程序崩溃 CCProxy 缓冲区溢出漏洞演示 在目标主机运行 CCProxy,使用默认设置 运行 CCProxy 的机器 IP是 使用 telnet 命令连接 CCProxy: telnet 23 返回信息: 输入 ping命令,后接畸形数据: 在 ping命令后接 10个字符 A,观察返回信息 将字符 A 的数量变为 100 个、 1000 个、 2000 个,观察返回信息 13 / 14 原理: 如果终端提示“ Host not found”,说明 CCProxy 正确地处理了这个畸形数据,仍工作正常 如果终端提示“失去了跟主机的连接”,表明 CCProxy已经崩溃 CCProxy 缓冲区溢出漏洞利用 如何利用这个漏洞,来实现 攻击目的,做一些特别的事情。 我们知道,栈是一个后进先出的结构,函数在入栈时,先将返回地址 RET压入栈,接着是 EBP基址寄存器,然后根据局部变量的大小,开辟一定大小的缓冲区,再将局部变量压入。 在将局部变量压入栈的时候,如果压入数据过长,大于事先声明的缓冲区大小,就会覆盖 EBP和 RET。 漏洞的利用有 5个方面的问题需要

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论