学号20232328 2025-2026-1 《网络与系统攻防技术》实验一实验报告

news/2025/10/7 11:33:28/文章来源:https://www.cnblogs.com/mzy-seven/p/19128306

1.实验内容
1.1NOP, JNE, JE, JMP, CMP汇编指令的机器码:
1.1.1NOP(No Operation)
功能:NOP指令是一条空操作指令,它不做任何事情。执行NOP指令时,处理器的状态(如寄存器值、内存内容等)不会发生变化,只是简单地消耗了一个指令周期。NOP指令通常用于对齐代码、填充空间或作为调试时的占位符。在x86架构中,NOP指令的机器码通常是90(十六进制)。
1.1.2JNE(Jump if Not Equal)
功能:JNE指令是一条条件跳转指令,它检查上一条CMP(Compare)指令或其他影响条件码(如ZF,零标志)的指令的结果。如果比较的结果表明两个操作数不相等(即ZF标志为0),则处理器会跳转到指令中指定的标签或地址处继续执行。JNE指令的机器码会根据跳转的目标地址而变化,但通常它会有一个前缀(如75对于短跳转)和随后的目标地址偏移量。
1.1.3JE(Jump if Equal)
功能:JE指令也是一条条件跳转指令,它检查上一条CMP指令或其他影响条件码的指令的结果。如果比较的结果表明两个操作数相等(即ZF标志为1),则处理器会跳转到指令中指定的标签或地址处继续执行。与JNE类似,JE指令的机器码会根据跳转的目标地址而变化,通常有一个前缀(如74对于短跳转)和随后的目标地址偏移量。
1.1.4JMP(Jump)
功能:JMP指令是一条无条件跳转指令,它导致处理器立即跳转到指令中指定的标签或地址处继续执行。JMP指令可以用来实现循环、函数调用和程序分支等。JMP指令的机器码会根据跳转的目标地址而变化,可以是短跳转(如EB前缀和随后的偏移量)、近跳转(如E9前缀和随后的偏移量)或远跳转(如EA前缀和随后的段地址和偏移量)。
1.1.5CMP(Compare)
功能:CMP指令用于比较两个操作数,但它本身不产生跳转。CMP指令通过从第一个操作数中减去第二个操作数来更新处理器的条件码(如ZF、SF、OF等),这些条件码随后可以被条件跳转指令(如JNE、JE)使用来决定是否跳转。CMP指令的机器码会根据操作数的类型和大小而变化,但通常会有一个操作码(如39用于比较两个寄存器)和随后的操作数(可以是立即数、寄存器或内存地址)。
1.2掌握反汇编与十六进制编程器
反汇编是指将机器代码转换为目标处理器专用的汇编代码或汇编指令的过程。机器代码是计算机能够直接识别和执行的二进制形式,而汇编代码则是使用汇编助记符编写的,更易于人类理解和编写的代码形式。
十六进制编程器,或称十六进制编辑器,是一种用于以十六进制视图进行文本编辑的软件工具。它允许用户以十六进制的形式查看或编辑文件的二进制数据。
1.3能正确修改机器指令改变程序执行流程
修改机器指令意味着改变程序中的二进制数据,从而改变程序在执行时的行为,如使用十六进制编辑器直接编辑二进制文件,或通过调试器在运行时动态修改指令。
改变程序执行流程是指通过修改机器指令,使程序在执行时跳转到不同的代码段,或执行不同的操作。
1.4能正确构造payload进行bof攻击
1.4.1NSR模式指的是一种特定的缓冲区溢出攻击方式,其中N、S、R分别代表不同的部分:
N(Nop Sled/Slide):也称为“滑动/滑行区”,由一系列的NOP(No Operation,无操作)指令组成。NOP指令不做任何事情,仅占用一个指令周期。在NSR模式中,NOP指令用于填充payload的开头部分,以确保即使返回地址被部分覆盖或修改,程序执行流仍然能够“滑动”到正确的shellcode位置。
S(Shellcode):是攻击者希望程序执行的实际恶意代码。在BOF攻击中,shellcode通常用于执行系统命令、打开网络端口或进行其他恶意活动。
R(Return Address):是程序执行完成后应该返回的地址。在BOF攻击中,会修改这个地址,使其指向shellcode的起始位置,从而执行恶意代码。
1.4.2在NSR模式下,payload的构造通常包括以下几个步骤:
1.确定缓冲区大小:需要确定目标程序中的缓冲区大小。
2.构造NOP Sled:根据缓冲区大小,构造一个足够长的NOP指令序列作为payload的开头部分。这个序列的长度应该足够长,以确保即使返回地址被部分覆盖,程序执行流仍然能够“滑动”到shellcode的位置。
3.添加Shellcode:在NOP Sled之后,添加希望执行的shellcode。这个shellcode需要被精确地编码,以确保在目标系统上能够正确执行。
4.设置返回地址:会设置一个返回地址,这个地址应该指向NOP Sled或shellcode的起始位置。在大多数情况下,由于数据的小端方式存储,返回地址需要按照特定的字节顺序(如\x7d\x84\x04\x08)进行编码。
1.4.3进行bof攻击
触发漏洞:向目标程序发送一个精心构造的输入(即payload),来触发缓冲区溢出漏洞。
覆盖返回地址:由于输入的长度超过了缓冲区的容量,因此部分输入会溢出到堆栈的其他部分,包括返回地址。通过精确控制输入的长度和内容,来覆盖返回地址。
执行恶意代码:当程序尝试返回到被覆盖的返回地址时,它会跳转到shellcode的位置,并执行其中的代码。
2.实验过程
首先安装好kali虚拟机,下载pwn1文件,输入命令对于pwn20222426文件进行反汇编。
屏幕截图 2025-09-29 183908

1

通过构造输入参数,造成BOF攻击,改变程序执行流
屏幕截图 2025-10-06 160452
如果输入1111111122222222333333334444444412345678,那么1234会覆盖返回地址,因此只需要修改这四个字符。
屏幕截图 2025-10-06 160508
这里通过break *0x804849d构造断点。
屏幕截图 2025-10-06 160526
通过perl命令生成input文件,通过xxd命令查看文件内容,通过输入(cat input;cat) | ./pwn1和ls命令进行测试,发现成功调用了getshell函数。
屏幕截图 2025-10-06 161925

使用输出重定向将perl生成的字符串存储到文件中:
perl -e 'print"\x90\x90\x90\x90\x90\x90\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80\x90\x4\x3\x2\x1\x00"' > input_shellcode
接着输入(cat input_shellcode;cat) | ./pwn1注入攻击buf。
重新打开一个终端,输入ps -ef | grep pwn1, 查看pwn1的进程号。
输入attach 2913,查看进程,

屏幕截图 2025-10-06 191314
再输入disassemble foo,之后设置断点,在第一个终端中按下enter键,在目前的终端里面输入c以及info r esp,

屏幕截图 2025-10-06 184717
屏幕截图 2025-10-06 191329

使用输出重定向将perl生成的字符串存储到文件中,命令如图所示。
最后执行(cat input_shellcode;cat) | ./pwn1,成功调用getshell函数。
输入ls测试,成功执行。
屏幕截图 2025-10-06 191233
屏幕截图 2025-10-06 191249

3.问题及解决方案
-问题1:文件权限不足,无法执行对应的操作
-问题1解决方案:在相关命令前面加入sudo进行解决
屏幕截图 2025-09-29 190412
-问题2:出现在 PowerShell 中执行这个命令时出现解析错误,是因为 PowerShell 对括号内的命令分隔语法有特殊要求
-问题2解决方案:使用脚本块语法,& { cat input_shellcode; cat } | ./pwn1

问题二
-问题3:在注入攻击时前面的结果与实验指导书一模一样,但在最终ls时会出现报错
-问题3解决方案:原因是因为没有执行堆栈的相关操作,于是进行堆栈的相关操作,设置堆栈可执行并关闭地址随机化
问题3
4.学习感悟、思考等
这次缓冲区溢出实验,让我对kali有了更加深入的体会和了解。。同时通过这次实验,让我对Linux命令更加熟悉,比如execstack命令的下载,遇到了很多问题,不过通过查阅资料和自己调试,还是成功解决了问题,积累了一定的经验。还有如何解决权限不足的问题,对pwn1开放所有人可以操作的权限,

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/930351.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《一元微积分》讲义习题

习题 \(1.1\): 第 \(1\) 题: \(1.1.7\):\(\N\) 上的加法是对乘法满足分配律:即对任意 \(m,n,k\in\N\),\((m+n)\cdot k=m\cdot k+n\cdot k\)。 证明:对 \(k\) 做数学归纳。 令 \(A=\{k\in\N|\forall m,n\in \N,(m…

【光照】Unity[光照探针]的作用与工作原理

光照探针是Unity中解决动态物体间接光照的核心技术,通过预计算存储空间光照信息,使动态物体获得与静态环境一致的照明效果。UnityURP中的光照探针技术经历了从手动放置到自适应探针体积(APV)的演进,APV能自动根据场…

[数学 - 线性回归]

简单说就是方程曲线 您提到的回归方程(Regression Equation)是统计学中一个极其强大和基础的工具,特别是在金融和量化分析中,它几乎无处不在。 它的本质是为了解决一个核心问题:如何量化不同事物之间的关系?1. 回…

251007

目录JT-JY7T3S1-1JT-JY7T3S1-2FT-(TED&VOAs) JT-JY7T3S1-1Oh, good morning, Is this a room number 26? Yes, thats right. So is this the students job center? it certainly is, how can i help you? Well,…

Java 并发锁

1 为什么要加锁 所先JVM将内存划分成2个区域主内存:所有线程共享的内存区域,存储所有的共享变量 工作内存:每个线程独有的内存区域,存储该线程使用到的共享变量的副本线程对变量的操作(读取、赋值)必须在工作内存完…

做插画的网站网上购物哪个商城好

[导读]Kaggle 的房价预测竞赛从 2016 年 8 月开始,到 2017 年 2 月结束。这段时间内,超过 2000 多人参与比赛,选手采用高级回归技术,基于我们给出的 79 个特征,对房屋的售价进行了准确的预测。今…

实用指南:点评中是如何实现短信登录的

实用指南:点评中是如何实现短信登录的pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mon…

[数学 - 方差 标准差 ]

假设和平均距离 比如两个人的射击成绩,我们要挑选一个“更加稳定”的选手:平均值相同时:假设样本数据是 \(x_1, x_2, \dots, x_n\) \(\bar{x}\) 表示这组数据的平均数。 所以,样本数据到 \(\bar{x}\) 的“平均距离…

黄南州wap网站建设公司代理ip大全

数据库请求接口封装 uniapp中提供了plus.sqlite接口,在这里我们对常用的数据库请求操作进行了二次封装 这里的dbName、dbPath、recordsTable 可以根据你的需求自己命名 module.exports {/** * type {String} 数据库名称*/dbName: salary,/*** 数据库地址* type {…

鄢陵县北京网站建设长沙网站制作工作室

需求&#xff1a;页面跳转到目标页面之后&#xff0c;对应的顶部路由高亮 上面的更多 跳转到 学情分析下面的学生分析 <template><div class"topBar" ref"topBar" v-loading.fullscreen.lock"fullscreenLoading"><div class&quo…

二分法算法技巧-思维提升 - 教程

二分法算法技巧-思维提升 - 教程2025-10-07 11:08 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !import…

开源量子模拟引擎:Quantum ESPRESSO本地部署教程,第一性原理计算轻松入门! - 实践

开源量子模拟引擎:Quantum ESPRESSO本地部署教程,第一性原理计算轻松入门! - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; f…

基于Python+Vue开发的大学竞赛报名管理系统源码+运行步骤

项目简介该项目是基于Python+Vue开发的大学竞赛报名管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习…

详细介绍:QT常用控件(1)

详细介绍:QT常用控件(1)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", …

网站制作素材绿色商城网站模板

多参数方法的问题相信很多人曾经都写过多参数的构造方法&#xff0c;就像下面示例的代码。当想要创建一个给全部属性赋值的实例的时候&#xff0c;就会利用这个多参数的构造方法。但是&#xff0c;当类的属性特别多的时候&#xff0c;你还会这么写吗&#xff1f;如果你写了一个…

Generate First, Then Sample: Enhancing Fake News Detection with LLM-Augmented Reinforced Sampling

论文阅读1. 任务 如何提高假新闻检测的效果,特别是针对假新闻本身的检测能力 2. 研究背景与问题提出:假新闻指包含虚假信息的新闻,其在社交媒体上的传播对公共卫生、政治等关键社会议题构成严重威胁。现有假新闻检测…

开发电商网站多少钱刷赞网站推广软件

文末下载上传环境源码客户端js检查一般都是在网页上写一段javascript脚本&#xff0c;校验上传文件的后缀名&#xff0c;有白名单形式也有黑名单形式。查看源代码可以看到有如下代码对上传文件类型进行了限制&#xff1a;我们可以看到对上传文件类型进行了限制。绕过方法1.我们…

手机网站网站开发流程开发软件开发

目录 一、常见的压缩包的扩展名 二、常见的压缩和解压指令 1、tar 2、tar gzip&#xff08;.tar.gz&#xff09; (或 .tgz) 3、tar bzip2&#xff08;.tar.bz2&#xff09; 4、zip 5、gzip 6、bzip2 7、xz 8、rar 9、7z 三、安装解压工具 一、常见的压缩包的扩展…

数据大屏

数据大屏 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1…

K8S上采用helm部署 Prometheus + Grafana

K8S上采用helm部署 Prometheus + Grafanapre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "M…