一、题目

本实验的学习目标是让学生将从课堂上学到的有关缓冲区溢出漏洞的知识进行实践,从而获得有关该漏洞的第一手经验。缓冲区溢出是指程序试图将数据写入预先分配的固定长度缓冲区边界之外的情况。恶意用户可利用此漏洞改变程序的流控制,甚至执行任意代码。此漏洞是由于数据存储(如缓冲区)和控件存储(如返回地址)的混合造成的:数据部分的溢出会影响程序的控制流,因为溢出会改变返回地址。
本实验将提供四台不同的服务器,每台服务器运行一个带有缓冲区溢出漏洞的程序。实验任务是开发一个利用漏洞的程序,并最终获得这些服务器上的root权限。除了进行这些攻击实验之外,还将试验几种针对缓冲区溢出攻击的对策。学生需要评估这些计划是否有效,并解释原因。

二、过程

一、Level 1 Attack
1.准备工作:
在server-code文件路径中打开命令行,输入make;make install;

执行dcbuild和dcup命令

关闭防范机制:memory randomization

2.执行两次打印出的结果一致且输出地址为0xffffxxxx,则说明memory randomization已关闭

3.首先尝试传送exploit.py文件,得到结果如图,可知失败

4.修改exploit.py文件:
编写shellcode如图:

利用ebp 和 Buffer address 计算地址ret和offset,修改如图:

5.运行后传输badfile,若出现(_) SUCCESS SUCCESS (_)则表示成功。

6.修改exploit.py文件,新建一个命令行窗口输入nc -l -p 7070开启监听,在另外一个窗口向server发送badfile文件,监听窗口得到以下内容,说明成功获取Revere Shell;

二、Level 2 Attack
1.在新窗口中输入echo hello | nc 10.9.0.6 9090

得到结果如图:

2.修改exploit2.py文件ret和s的值,处理不知道大小的 buffer。
解决方法由于不知offset则逐一尝试。

3.运行后传输文件,得到结果表示成功:

三、Level 3 Attack
1.在新窗口中输入echo hello | nc 10.9.0.7 9090,连接如下图:

2.修改exploit3.py文件如下图,

4.运行后传输文件,得到结果表示成功:

四、Level 4 Attack
1.在新窗口中输入echo hello | nc 10.9.0.8 9090,连接如下图:


2.修改exploit4.py文件如下图

3.运行后传输文件,得到结果表示成功:

五、level5
1.开启地址随机化

2.执行nc -lnv 7070开启监听

3.更改exploit.py文件为reverse shell,总用时4秒。


4.成功后监听窗口返回shell

六、level6
进入 server-code 文件夹,执行gcc -DBUF SIZE=100 -DSHOW_FP-z execstack -static -m32 -o stack-L1 stack.c。去除 -fno-stack-protector 编译 stack.c,并将 badfile 作为输入,可以看到检测到了 stack smashing。
进入 shellcode 文件夹,去除 -z execstack 编译call_shellcode.c 并运行,可以看到,栈不再可执行。

网络攻防技术——缓冲区溢出攻击实验相关推荐

  1. 网络攻防之缓冲区溢出攻击

    什么是缓冲区溢出? 缓冲区溢出是一种异常现象,当软件向缓冲区中写入数据使缓冲区容量溢出时,会导致相邻存储器位置被覆盖.换句话说,过量的信息被传递到没有足够空间的容器中,而这些信息最终会替换相邻容器中的 ...

  2. 黑客中级技术--缓冲区溢出攻击(转)

    黑客中级技术--缓冲区溢出攻击(转)[@more@] 缓冲区溢出是一种非常普遍.非常危险的漏洞,在各种操作系统.应用软件中广泛存在.利用缓冲区溢出攻击,可以导致程序运行失败.系统当机.重新启动等后果. ...

  3. 实验8 缓冲区溢出攻击实验

    实验8 缓冲区溢出攻击实验 缓冲区溢出是目前最常见的一种安全问题,操作系统以及应用程序大都存在缓冲区溢出漏洞.缓冲区是一段连续内存空间,具有固定的长度.缓冲区溢出是由编程错误引起的,当程序向缓冲区内写 ...

  4. 计算机系统(2) 实验四 缓冲区溢出攻击实验

    计算机系统(2) 实验四 缓冲区溢出攻击实验 一. 实验目标: 二.实验环境: 三.实验内容 四.实验步骤和结果 (一)返回到smoke (二)返回到fizz()并准备相应参数 (三)返回到bang( ...

  5. 【计算机系统】缓冲区溢出攻击实验

    github地址 一. 实验目标: 理解程序函数调用中参数传递机制: 掌握缓冲区溢出攻击方法: 进一步熟练掌握GDB调试工具和objdump反汇编工具. 二.实验环境: 计算机(Intel CPU) ...

  6. 计算机系统基础学习笔记(7)-缓冲区溢出攻击实验

    缓冲区溢出攻击实验 实验介绍 实验任务 实验数据 目标程序 bufbomb 说明 bufbomb 程序接受下列命令行参数 目标程序bufbomb中函数之间的调用关系 缓冲区溢出理解 目标程序调用的ge ...

  7. 缓冲区溢出攻击实验(C语言 | 汇编语言 | 输出deadbeef)

    缓冲区溢出攻击实验(输出deadbeef) C语言题目源码 尝试 运行程序 观察 分析 栈内部情况 决定使用栈溢出 实施 使用vs2019打开反汇编 使用反汇编 构造payload 得到结果 C语言题 ...

  8. CSAPP缓冲区溢出攻击实验(上)

    CSAPP缓冲区溢出攻击实验(上) 下载实验工具,最新的讲义在这.网上能找到的实验材料有些旧了,有的地方跟最新的handout对不上.不过没有关系,大体上只是程序名(sendstring)或者参数名( ...

  9. 【网络攻防技术】实验四——缓冲区溢出攻击实验

    文章目录 一.实验题目 二.实验步骤 Task1: Get Familiar with the Shellcod Task2: Level-1 Attack Task 3: Level-2 Attac ...

  10. 缓冲区溢出攻击实验(一)

    无聊之余,想弄一下缓冲区溢出实验,之前一直听说这个,也没有亲自动手做一下,发现真正弄起来的时候还是没那么简单的,其实学到的东西还是不少的.特此记下学习的过程. 一.基础知识 这一部分主要是关于程序内存 ...

最新文章

  1. HTTP referer
  2. ADT,Eclipse启动时在Android SDK Content Loader0%无法编译
  3. Matlab实现线性回归和逻辑回归: Linear Regression Logistic Regression
  4. halcon的算子清点: Chapter 5 滤波
  5. fastText原理和文本分类实战
  6. 推荐给开发和设计人员的iPad应用
  7. java自增自减很难理解_关于java中自增,自减,和拓展运算符的小讨论
  8. HBase错误解决(启动Hbase出现错误的替换,启动hbase shell出现ERROR KeeperErrorCode=NoNode for /hbase/master)
  9. Python稳基修炼之计算机等级考试易错细节题1(含答案和解析)
  10. [iOS] ios的runtime
  11. 判断数组、集合list、string、int、double等是否为空,判断是否为值类型
  12. 软件项目管理案例教程笔记
  13. P2184 贪婪大陆(树状数组)
  14. 能跟CAD、BIM软件联合使用的地图神器,比奥维谷歌地图还方便!
  15. 电子计算机司法鉴定客体特征,电子证据司法鉴定的含义和特点是什么?
  16. 群晖(docker图形化界面)使用 SpeedTest 测速
  17. 合天网安weekly系列ctf实战 | 第八周 | 随意的上传wp
  18. 全局异常处理-dao-service-controller-gateway网关工程-集中处理token-登陆模块-获取用户信息-ThreadLocal-组件-项目环境推荐-swagger-knif转发
  19. HITCSAPP大作业——程序人生
  20. Nginx配置在线一键生成“神器”,不用愁了

热门文章

  1. 【模糊控制器】基于simulink的模糊控制器设计
  2. SmartSVN忽略文件与文件夹的设置
  3. Power BI数据源之web
  4. 数学边界(数学萌芽、初等数学、高等数学)
  5. 计算机网络体系结构图解
  6. 怎么把两个pdf合并成一个?pdf合并方法
  7. java 面试高频问题 java8新特性
  8. 荣耀路由器外界硬盘与win10
  9. 代理模式-CGLIB动态代理
  10. 华为云HCIA含金量,华为HCIA题库