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

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

时间:2024-10-11 19:22:10浏览次数:8  
标签:随机化 2024 2025 gdb 指令 溢出 缓冲区 20222316 输入

一、实验内容

  • 缓冲区溢出定义:
    缓冲区溢出是一种程序错误,在这种情况下,数据被写入到内存中的缓冲区时超过了该缓冲区所能容纳的最大容量。当超过缓冲区的边界时,额外的数据会溢出到相邻的内存位置中,覆盖掉其他数据或指令,导致程序行为异常或系统安全漏洞。

  • 缓冲区溢出的原因:
    编程错误:开发者在编写代码时没有正确检查输入数据的长度或没有正确地管理内存资源。
    缺乏验证:当接收来自外部(如用户输入)的数据时,如果没有正确的输入验证机制来确保数据不会超出预期范围,就可能导致溢出。
    使用不安全函数:某些编程语言中的函数(例如 C 语言中的 strcpy 或 gets)如果使用不当,很容易导致缓冲区溢出。
    动态内存管理不当:在动态分配内存的情况下,如果释放内存后没有正确地清除指针或者重复释放同一块内存区域,也可能引发相关问题。
    设计缺陷:软件设计阶段没有考虑到所有可能的输入情况,或者没有为潜在的大输入量留有足够的处理空间。

二、实验过程

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

  • 下载目标文件pwn1,拖入虚拟机,改名为pwn20222416。
  • 正常运行该文件,可以回显输入的字符串。

  • 使用“objdump -d pwn20222316 | more”命令,反汇编并找到函数调用的相关指令。

可以看到main中80484b5位置是跳转到foo函数的指令。


跳转指令中,e8是跳转的意思,d7ffffff为补码,表示当前地址+(-41),所以要调用getShell函数,需要改变后面四个字节。
根据计算,0804847d-80484ba=ffffffc3,应该是-61,即-0x3d,补码为c3ffffff。

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

1.vi进入pwn2,在乱码界面按Esc键,然后输入:%!xxd
2.输入/e8d7,找到e8d7,修改d7为c3
3.输入:%!xxd -r
4.输入:wq退出




  • 再次反汇编,检验是否修改正确。

可以看到该条指令现在调用的是getShell函数


  • 运行修改后文件。

此时可以进入shell。

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

  • 对pwn20222316_BOF反汇编。

该可执行文件正常运行是调用函数foo。foo函数有Buffer overflow漏洞:foo读入字符串,但系统只预留了(28)字节的缓冲区,超出部分会造成溢出。

  • 检查gdb环境

1.在终端中输入gdb -v,若找不到该命令,则需进行安装操作
2.输入sudo apt-get install gdb
3.输入gdb-v检查是否安装成功

  • 分析覆盖返回地址的字符

启动gdb,输入1111111122222222333333334444444455555555,使用info r查看EIP寄存器中的数据,发现eip的值是0x35353535,即5555的ascii码。

再输入另一个特定的过长字符串,查看eip的值为0x34333231,即4321的ascii码。这就确定了应该如何设置攻击字符串,即将第33至第36个字符设置为804847d按字节的倒序。

  • 利用perl软件生成包含这样字符串的一个文件。

  • 用“xxd input20222316”命令查看文件内容,可以发现内容正确。

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

可以发现程序调用了getShell函数,可以获取shell了。

3. 注入Shellcode并执行

  • 准备一段Shellcode

  • 关闭地址随机化

1.先通过execstack - s 指令来设置堆栈可执行
2.再用 execstack -q 指令查询文件的堆栈是否可执行
3.检查发现randomize_va_space为2,即地址随机化保护是开启的
关闭地址随机化
4.检查发现randomize_va_space为0,即地址随机化保护是关闭的

  • 构造要注入的payload

Linux下有两种基本构造攻击buf的方法:

  • retaddr+nop+shellcode
  • nop+shellcode+retaddr
  • 在终端1中入攻击buf,回车一次即可,

不要出现指导书里的乱码。

  • 打开终端2,用gdb调试该程序

输入ps -ef | grep pwn20222316,找到pwn20222316的进程号

打开gdb,调试该程序

通过设置断点,来查看注入buf的内存地址(终端1按回车)

  • 重新生成input_shellcode


  • 注入input_shellcode,并执行。

三、问题及解决方案

  • 问题1:输入sudo apt-get install execstack ,提示Unable to locate package
  • 问题1解决方案:https://blog.csdn.net/weixin_43729943/article/details/104221462
  • 问题2:最后一个注入Shellcode总提示broken pipe
  • 问题2解决方案:虚拟机配置有问题,重新按步骤安装了一遍虚拟机解决。

四、学习感悟、思考等

通过本次实验,我对缓冲区溢出攻击有了更深的了解,对于linux系统的各种命令也有了更深的认识。

参考资料

标签:随机化,2024,2025,gdb,指令,溢出,缓冲区,20222316,输入
From: https://www.cnblogs.com/tongxixi/p/18459102

相关文章

  • 绘图工具Origin 2024简体中文版百度云
    如大家所了解的,Origin是一款功能强大的图形可视化和数据分析软件,也是科研人员和工程师常用的数据分析和制图工具。Origin为初学者提供了一个易于使用的界面,并且随着用户对应用程序的熟悉,结合了执行高级定制的能力。目前最新为Origin2024版本。Origin8.0-2024: https://pan......
  • 论文分享---CVPR2024:用于单源域泛化目标检测的无偏 Faster R-CNN
     论文地址https://arxiv.org/pdf/2405.15225简介:此论文由刘亚静,周世军,刘希尧,郝春辉,范宝杰,田建东,中国科学院沈阳自动化研究所机器人国家重点实验室、中国科学院机器人与智能制造研究所、中国科学院大学、南京邮电大学在CVPR2024上发表。摘要单源域泛化(SDG)物体检测是一项......
  • 20222311 2024-2025-1 《网络与系统攻防技术》实验一实验报告
    202223112024-2025-1《网络与系统攻防技术》实验一实验报告1.实验内容本次实验主要内容为BOF注入攻击,任务如下:掌握反汇编及其指令修改程序的机器指令,从而实现BOF注入攻击注入一段Shellcode,以实现BOF注入攻击2.实验过程任务1:修改可执行文件机器指令,改变程......
  • # 20222409 2024-2025-1 《网络与系统攻防技术》实验一实验报告
    1.实验内容1.1逆向工程与汇编基础:掌握了汇编指令(如NOP、JMP等)在控制程序流中的作用。学会使用objdump反汇编可执行文件,并通过十六进制编辑器修改机器码以改变程序执行流程。1.2缓冲区溢出(BufferOverflow)原理:了解堆栈结构和返回地址覆盖,理解如何通过超长输入覆盖返回地址来控......
  • 2024年还不知道如何清理c盘?最齐全的C盘清理指南!(非常详细)零基础入门到精通,收藏这一篇就
    这段时间以来,我收到最多的问题还是问如何解决C盘爆满,那么今天就来给大家详细讲述一下该怎么给C盘“瘦身”。我之前在文章《带你全面了解你的C盘!并且给它“瘦身”!》中讲到过C盘各个文件夹的作用,也提到过一些清理C盘的方法,但是它并不全面,大家都知道C盘中存放着很多的系统文件......
  • 2024护网行动:HW常见红队使用工具_红队工具
    目录什么是HW?什么是网络安全红蓝对抗?红队常见工具信息收集工具Nmap简介漏洞扫描工具Nessus简介AWVS简介抓包工具Wireshark简介TangGo简介web应用安全工具Burpsuite简介SQLMapwebshell管理工具蚁剑冰蝎后渗透工具CobaltStrikeMeterpreter密码破......
  • [45] (多校联训) A层冲刺NOIP2024模拟赛05
    这是什么午休,大黄突然走进来大黄:闪电特效!其他人:?大黄:5k!其他人:???大黄:【闪电特效】【闪电特效】男人中的男人【闪电特效】【闪电特效】雄性中的雄性【闪电特效】【闪电特效】巅峰!【闪电特效】【闪电特效】A.好数简单变形一下\[f_i+f_j+f_k=c\]\[f_j+f_k=c-f_i\]然......
  • 2024最新最全:网络安全人士【必备的30个安全工具】
    1.WiresharkWireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是截取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。2.MetasploitMetasploit是一个免费的、可下载的框架,通过它可以很容易......
  • 2024红队必备工具列表总结_railgun工具
    一、信息收集1、AppInfoScanner一款适用于以HVV行动/红队/渗透测试团队为场景的移动端(Android、iOS、WEB、H5、静态网站)信息收集扫描工具,可以帮助渗透测试工程师、红队成员快速收集到移动端或者静态WEB站点中关键的资产信息并提供基本的信息输出,如:Title、Domain、CDN、......
  • 2024最新最全:Wireshark抓包详解(非常详细)零基础入门到精通,收藏这篇就够了
    在网络工程、安全分析和网络维护中,经常需要诊断和解决各种网络问题。Wireshark作为一款强大的网络抓包工具,因其支持多种操作系统、网络协议和网络接口,成为了网络工程师、安全专家和学习者的必备工具。本文将详细讲解如何通过Wireshark抓包并分析网络问题,帮助读者更好地理解......