seedlabs_网络攻防技术_lab4

2023-11-28 15:50

本文主要是介绍seedlabs_网络攻防技术_lab4,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

lab4 缓冲区溢出实验

一、实验要求

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

二、实验步骤及结果

task1: Get Familiar with the Shellcode

  1. 进入shellcode文件夹,修改shellcode_32.py ,使其能够删除文件

在这里插入图片描述

  1. 编译运行(需要先行创建一个tmpfile)

在这里插入图片描述

task2: Level-1 Attack

  1. 进入server-code文件夹,执行下列命令

make
make install

在这里插入图片描述

  1. 回到labsetup文件夹下,执行下列命令

dcbuild

dcup

在这里插入图片描述
在这里插入图片描述

  1. 保持上述终端窗口,另开一个终端到attack-code文件夹下执行下述命令

nc 10.9.0.5 9090

  1. ctrl+C终止后,可以看到server显示

在这里插入图片描述

  1. 修改exploit.py为下图

在这里插入图片描述
6. 注意要关闭ASLR(地址空间随机化),不然后面运行会失败

sysctl -w kernel.randomize_va_space=0
在这里插入图片描述

​ 像这样两次输出一致且都是0xffffxxxx的形式就成功了
在这里插入图片描述

  1. 再根据ebp和buffer address计算ret和offset

ret = ebp + 8

offset = ebp - buffer address + 4 # 需要注意统一进制

在这里插入图片描述

  1. 运行exploit.py后,传输badfile,查看输出,得知成功运行

在这里插入图片描述

task3: Level-2 Attack

  1. 输入echo hello | nc 10.9.0.6 9090,连接2号服务器

​ 可以看到只提供了buffer address
在这里插入图片描述

  1. 根据文档可知offset范围为100~300
    在这里插入图片描述
  2. 新建一个exploit2.py,修改代码如下由于不知offset,所以用循环进行尝试

在这里插入图片描述
4. 运行并传输文件,攻击成功
在这里插入图片描述

task4: Level-3 Attack

  1. 输入echo hello | nc 10.9.0.7 9090,连接3号服务器

​ 可以看到3号服务器使用64位系统,rbp就是上面的ebp
在这里插入图片描述

  1. 修改exploit3.py,注意shellcode部分使用shellcode_64.py中的代码

ret = buffer address

offset = rbp - buffer address + 8 # 注意进制 32位系统+4,64位系统+8 十进制

在这里插入图片描述
在这里插入图片描述

  1. 运行并传输文件,攻击成功

在这里插入图片描述

task5: Level-4 Attack

  1. 连接服务器

​ 4号服务器与3号服务器相同,但是buffer size更小
在这里插入图片描述
2. 与task4原理相同,修改exploit4.py文件如下

在这里插入图片描述

  1. 运行后传输文件,成功

在这里插入图片描述

task6: Experimenting with the Address Randomization

  1. 开启ASLR,观察它是如何影响攻击的

sudo /sbin/sysctl -w kernel.randomize_va_space=2

在这里插入图片描述

  1. 向1号服务器和3号服务器发送hello信息,多发送几次,进行观察

在这里插入图片描述
在这里插入图片描述

为什么ASLR使缓冲区溢出攻击更加困难

地址空间随机化(Address Space Layout Randomization)(ASLR)是一种操作系统用来抵御缓冲区溢出攻击的内存保护机制。ASLR通过对攻击者在进行缓冲区溢出攻击时所要用到的内存布局中的偏移做了随机化,加大了攻击成功的难度,从而增强了系统的控制流完整性。这种技术使得系统上运行的进程的内存地址无法被预测,使得与这些进程有关的漏洞变得更加难以利用。

通常认为ASLR在64位系统上效果更好,因为64位系统有更大的可随机的地址范围。

克服32位系统的ASLR

​ 根据pdf给出的shell脚本进行循环攻击

在这里插入图片描述

​ 攻击成功就会停下,理论上十分钟内能得到结果

​ 但是我这里运行了16分钟、11万次都没有成功

在这里插入图片描述

task7: Experimenting with Other Countermeasures

a. Turn on the StackGuard Protection

进入server-code文件夹,移除gcc的栈溢出保护机制-fno-stack-protector。编译stack.c,并将badfile作为输入

在这里插入图片描述

​ 可以看到检测到了 stack smashing

b. Turn on the Non-executable Stack Protection

​ 进入 shellcode 文件夹,去除 -z execstack 编译 call_shellcode.c 并运行

在这里插入图片描述
可以看到,发生了segmentation fault,栈不可再用

这篇关于seedlabs_网络攻防技术_lab4的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/429918

相关文章

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

金融业开源技术 术语

金融业开源技术  术语 1  范围 本文件界定了金融业开源技术的常用术语。 本文件适用于金融业中涉及开源技术的相关标准及规范性文件制定和信息沟通等活动。

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

poj 3181 网络流,建图。

题意: 农夫约翰为他的牛准备了F种食物和D种饮料。 每头牛都有各自喜欢的食物和饮料,而每种食物和饮料都只能分配给一头牛。 问最多能有多少头牛可以同时得到喜欢的食物和饮料。 解析: 由于要同时得到喜欢的食物和饮料,所以网络流建图的时候要把牛拆点了。 如下建图: s -> 食物 -> 牛1 -> 牛2 -> 饮料 -> t 所以分配一下点: s  =  0, 牛1= 1~

poj 3068 有流量限制的最小费用网络流

题意: m条有向边连接了n个仓库,每条边都有一定费用。 将两种危险品从0运到n-1,除了起点和终点外,危险品不能放在一起,也不能走相同的路径。 求最小的费用是多少。 解析: 抽象出一个源点s一个汇点t,源点与0相连,费用为0,容量为2。 汇点与n - 1相连,费用为0,容量为2。 每条边之间也相连,费用为每条边的费用,容量为1。 建图完毕之后,求一条流量为2的最小费用流就行了

poj 2112 网络流+二分

题意: k台挤奶机,c头牛,每台挤奶机可以挤m头牛。 现在给出每只牛到挤奶机的距离矩阵,求最小化牛的最大路程。 解析: 最大值最小化,最小值最大化,用二分来做。 先求出两点之间的最短距离。 然后二分匹配牛到挤奶机的最大路程,匹配中的判断是在这个最大路程下,是否牛的数量达到c只。 如何求牛的数量呢,用网络流来做。 从源点到牛引一条容量为1的边,然后挤奶机到汇点引一条容量为m的边

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出 在数字化时代,文本到语音(Text-to-Speech, TTS)技术已成为人机交互的关键桥梁,无论是为视障人士提供辅助阅读,还是为智能助手注入声音的灵魂,TTS 技术都扮演着至关重要的角色。从最初的拼接式方法到参数化技术,再到现今的深度学习解决方案,TTS 技术经历了一段长足的进步。这篇文章将带您穿越时

系统架构设计师: 信息安全技术

简简单单 Online zuozuo: 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo :本心、输入输出、结果 简简单单 Online zuozuo : 文章目录 系统架构设计师: 信息安全技术前言信息安全的基本要素:信息安全的范围:安全措施的目标:访问控制技术要素:访问控制包括:等保

前端技术(七)——less 教程

一、less简介 1. less是什么? less是一种动态样式语言,属于css预处理器的范畴,它扩展了CSS语言,增加了变量、Mixin、函数等特性,使CSS 更易维护和扩展LESS 既可以在 客户端 上运行 ,也可以借助Node.js在服务端运行。 less的中文官网:https://lesscss.cn/ 2. less编译工具 koala 官网 http://koala-app.