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

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

时间:2024-10-11 17:02:03浏览次数:1  
标签:虚拟机 gdb 2024 2025 地址 共享 20222418 shellcode 输入

1.实验内容

本周课程内容为缓冲区溢出和shellcode:

2.实验过程

(1)直接修改程序机器指令,改变程序执行流程
①首先根据网上教程安装好kali虚拟机,更改主机名为heshan;下载目标文件pwn1,将pwn1文件放入共享文件夹并在VMware中设置共享以便使用,并将其重命名为pwn20222418。

②然后运行可执行文件./pwn20222418,再对文件进行反汇编找到

三个函数,此时call指令跳转到foo函数:

③修改可执行文件pwn20222418,将其中的call指令的目标地址由d7ffffff变为c3ffffff:
终端输入vi pwn20222418 ,打开文件后为乱码,输入:%!xxd将显示模式切换为16进制模式,然后查找修改内容/e8 d7并修改d7为c3。

(查找修改内容/e8 d7)

(修改完成,转换16进制为原格式)
④再对文件进行反汇编,此时call指令跳转到getShell函数:

运行下改后的代码,会得到shell提示符#:

(2)通过构造输入参数,造成BOF攻击,改变程序执行流
首先根据提示安装gdb,使用sudo apt update和sudo apt install gdb命令安装gdb。
①反汇编,了解程序的基本功能:

在程序调用时,会读入字符串,但系统只预留了28字节的缓冲区,超出部分会造成溢出,我们的目标是覆盖返回地址。根据反汇编结果,程序正常执行时,call指令会调用foo函数,并在堆栈中压入返回地址0x80484ba。
②确认输入字符串哪几个字符会覆盖到返回地址:

如果输入字符串111111111111111111111111111234567890123,那 3456 那四个数最终会覆盖到堆栈上的返回地址,进而CPU会尝试运行这个位置的代码。那只要把这四个字符替换为 getShell 的内存地址,输给pwn20222418,就会运行getShell。
③确认用什么值来覆盖返回地址:
1234替换为getShell的地址0x0804847d,根据字节序,需要输入11111111222222223333333344444444\x7d\x84\x04\x08。
④构造输入字符串
由为我们没法通过键盘输入\x7d\x84\x04\x08这样的16进制值,所以先生成包括这样字符串的一个文件,使用16进制查看指令xxd查看input文件的内容是否如预期。

然后将input的输入,通过管道符“|”,作为pwn1的输入,成功调用shellcode。

(3)注入Shellcode并执行
①准备一段Shellcode
我使用指导里给出的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
②准备工作:修改设置
这一步需要安装execstack,使用sudo apt-get upgrade命令无法安装execstack,所以需要在外部官网进行安装,官网链接为:http://ftp.de.debian.org/debian/pool/main/p/prelink/execstack_0.0.20131005-1+b10_amd64.deb,安装好后移入共享文件夹,使用sudo dpkg -i execstack_0.0.20131005-1+b10_amd64.deb命令进行解压。

安装好后开始修改设置:

③构造要输入的payload
构造shellcode的输入,并注入这段攻击buf;其中x1x2x3x4是占位符,后续将替换为注入shellcode的地址,即foo函数中返回地址的位置,这个地址需要我们接下来通过gdb分析找到。

再开另外一个终端,用gdb来调试这个进程。
首先找到pwn的进程号是3869。

启动gdb调试这个进程:

通过设置断点,来查看注入buf的内存地址,找到01020304,就是返回地址的位置。shellcode就挨着,所以地址是 0xffdc3040

重新构造shellcode的输入并验证:

尝试调用shellcode:

本来应该成功结束了,可恶!!!
但很遗憾,失败了,此后我重新尝试了几次,都在最后这一步出现同样的错误,我不信邪拿室友的电脑重做了一次,居然一下就成功了!(以下是成功截图)




截止写报告我还没改成功自己电脑的实验,眼看快提交了才用了室友的电脑尝试[对手指],我想之后再继续看看是哪里的问题。

3.问题及解决方案

  • 问题1:共享文件夹在虚拟机再次启动时共享失败
  • 问题1解决方案:查找资料发现如果选择一直启用共享文件夹,再次开启虚拟机时需要再次挂载,也可以选择每次开机时重新共享
  • 问题2:找不到execstack命令
  • 问题2解决方案:上网搜索发现需要下载,且需要到外部官网下载放入文件夹,你是在Windows主机下载压缩包后,通过共享文件夹用虚拟机解压安装。
  • 问题3:最后调用shellcode失败报错
  • 问题3解决方案:换了个虚拟机从头开始做,成功了;正在根据报错查找资料尝试解决。

4.学习感悟、思考等

实验开始之前,我对实验内容和任务可以说是一点也不明白,刚开始做的过程中也是只能按照实验指导的步骤一步步来,但不出所料这样单纯的模仿出了不少问题,比如多按了enter不会共享文件看不懂报错等。在这个过程中我不断和同学交流、查找资料并对比一些网络上的信息,不断尝试才最终完成实验,在这之后我对本次缓冲区溢出实验的原理和三种方法的过程有了理解和吸收,给其他人讲的时候也能说出一二,这既让我觉得神奇有趣也让我有了一些成就感和继续学习的更多动力。

参考资料

(主要参考资料)
https://blog.csdn.net/qq_24484317/article/details/129532811?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522B570DD9E-72CE-43F5-AE66-55C3BA54673A%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=B570DD9E-72CE-43F5-AE66-55C3BA54673A&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-129532811-null-null.142v100pc_search_result_base6&utm_term=kali%20linux%E5%AE%89%E8%A3%85%E6%95%99%E7%A8%8B&spm=1018.2226.3001.4187
https://blog.csdn.net/Libra1313/article/details/135628331
https://zhuanlan.zhihu.com/p/111035992
https://gitee.com/wildlinux/NetSec/blob/master/ExpGuides/0x11_MAL_逆向与Bof基础.md#4-注入shellcode并执行
https://blog.csdn.net/zonei123/article/details/105500483

标签:虚拟机,gdb,2024,2025,地址,共享,20222418,shellcode,输入
From: https://www.cnblogs.com/20222418fcca/p/18458868

相关文章

  • 2025年软考考试+报名时间安排!这份日历请收好!
    软考(计算机技术与软件专业技术资格(水平)考试)是纳入全国专业技术人员职业资格证书制度统一规划,实行大纲、试题、标准、证书均统一的考试办法。2024年软考报名已经结束,想要报考的同学请提前备考2025年的考试,那2025年软考考几次?考试是什么时候呢?2025年软考考试时间:软考考试时......
  • EI稳定检索|7天录用|第四届智能电力与系统国际学术会议(ICIPS 2024)
    电力学科品牌IEEE会议,往届均已EI检索!“推动新质生产力加快发展,培育新能源新兴产业,实现电力行业新跨越”高端主题研讨会暨第四届智能电力与系统国际学术会议(ICIPS2024)【往届见刊后1个月完成EI检索】*澳大利亚会场(11月1-3日)地点:珀斯|澳大利亚|MurdochUniversity  ......
  • 20222302 2024-2025-1 《网络与系统攻防技术》实验一实验报告
    1.实验内容本周学习内容1.熟练掌握了栈和堆的概念。2.掌握了Linux的基本操作,如shell命令和编译器gcc、调试器gdb的使用。3.掌握了缓冲区溢出的原理。实验任务本次实验的对象是一个名为pwn1的linux可执行文件。该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何......
  • 20222425 2024-2025-1 《网络与系统攻防技术》实验一实验报告
    1.实验内容本周学习了缓冲区溢出的相关知识点,介绍了包括汇编语言、进程内存管理、函数调用过程等相关知识点。1.1实践目标1.手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数。2.利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数。3.注入......
  • 2024年最详细的mysql主从复制来啦
    mysql主从复制一、主从复制简述MySQL主从复制是一种数据库复制技术,用于在主数据库(Master)和一个或多个从数据库(Slave)之间同步数据。这种技术允许数据从主数据库复制到从数据库,实现数据的冗余存储和读写分离,从而提高数据库的可用性和扩展性。二、主从复制的优势主从复制的......
  • 2024.10.11总结
    本文于github博客同步更新最简单但挂分最惨的一集。唐死我了唐死我了唐死我了唐死我了唐死我了唐死我了唐死我了唐死我了唐死我了唐死我了唐死我了唐死我了唐死我了唐死我了唐死我了唐死我了唐死我了唐死我了唐死我了唐死我了唐死我了唐死我了唐死我了唐死我了唐死我了唐死我了......
  • 2024.10.11 test
    A平面上给出若干个点,求两两点之间曼哈顿距离比欧几里得距离的最大与最小值。\(n\le10^6\)。不难发现最小值求的就是线段斜率最接近\(0\)的线段,最大值就把每个点绕源点旋转\(45\)度即可。这个东西考虑按照\(y\)坐标排序,\(y\)相同的按照\(x\)排序,有贡献的只有相邻点。......
  • 2024 最新 IntelliJ IDEA 2024.1.6 激活(亲测可用)
    注意:接下来本文分享免费激活 IDEA 等Jetbrains全家桶工具,一直支持到最新版本2024.1.6。 1.下载安装IDEA (mac、window、linux都支持)大家直接在官网下载最新版本,登陆官网,下载最新版本2024.1.4。一步一步确定安装,然后打开这里提示输入激活码,先关闭应用!!!2.下载激活工具打......
  • 2024 最新 Navicat Premium 17.1.5 简体中文版(亲测可用)
    步骤如下:一、官网下载安装包:https://www.navicat.com.cn/download/navicat-premium  二、安装NavicatPremium17  注意:安装完后不要打开已打开自行退出三、补丁下载关注后发送“navicat17”即可获取补丁下载地址,无套路。 四、安装补丁先将下载下来的压缩包里面......
  • 阿里云可观测 2024 年 9 月产品动态
    本月可观测热文回顾文章一览:iLogtail进化论:重塑可观测采集的技术边界深入探索RUM与全链路追踪:优化数字体验的利器新场景、新能力,AI-native时代的可观测革新重磅!阿里云可观测产品家族全新升级,AI+数据双驱动,打造全栈可观测体系云监控治理检测:云监控的自助化最佳实践高基......