20192418张曦 2021-2022-2 《网络与系统攻防技术》实验一实验报告

20192418张曦 2021-2022-2 《网络与系统攻防技术》实验一实验报告

一、实验内容

本次实践的对象程序是一个名为pwn20192418的linux可执行文件。

程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串。

该程序同时包含另一个代码片段,getShell,会返回一个可用Shell。正常情况下这个代码是不会被运行的。本次实验实践的目标就是想办法运行这个代码片段。本次实验将用两种方法运行这个代码片段,然后注入运行Shellcode。

三个实践内容如下:

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

这三种思路,代表了三种现实情况中要攻击的目标:

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

二、实验过程

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

先利用objdump指令对pwn20192418进行反汇编,得到以下代码:

在main函数中,通过"call"指令跳转到foo函数实现foo函数的回显功能。d7ffffff是为foo函数的地址偏移量,把他改为getshell地址的偏移量,即可使其运行getshell函数。

main函数调用foo,对应机器指令为“e8 d7ffffff”

如果要调用getShell函数,只需修改“d7ffffff”为getShell函数地址对应的补码。
用Windows计算器直接得到补码c3ffffff。
所以,将其中的call指令的目标地址由d7ffffff变为c3ffffff,即可达成目的。
用vi指令浏览文件,用%!xxd指令使文件显示为16进制格式并用/e8d7找到修改位置,将d7修改为c3

发现main函数中已经变为调用getshell函数

运行修改后的代码,可以得到shell提示符

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

在main函数调用的foo函数中仅仅只给输入的数据分配了28字节(0x1c)的空间,只要输入的字符串足够长,并将输入字符串的第33~36字节填入getShell函数的基地址(0804847d),就可以让程序跳转到getShell函数。

输入连续8个12345进行猜想验证

“5”的ASCII码为35,把之前8个“5”的位置换成12345678

28个字节的缓冲区加上4个字节的ebp,所以在32个字节后的四个数最终会覆盖到堆栈的返回地址上。
只需把这4个字符替换为getShell函数的内存地址,pwn就会运行getShell。
在上一个实验任务的反汇编中,可知结果getShell的内存地址为:0x0804847d,将他覆盖上去:

perl

大功告成

构造输入参数注入运行shellcode

首先要关闭地址随机化:

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

选择retaddr+nops+shellcode结构来攻击buf

打开另一个终端查看进程pwn20192418,可以知道他的进程号为2088

(下半图为gdb调用)

使用"break *0x080484ae"设置断点,查看注入的内存地址


查看堆栈,可看到shellcode的位置是0xffffd190

将前4字节改为ffffd190,即可注入成功。

三、问题及解决方案

  • 问题1:按照网上教程无法安装gdb

  • 问题1解决方案:同学也出现过一样的问题,在宗俊豪同学的帮助下,用apt-get update和apt-get install gdb两条指令安装了gdb。

  • 问题2:这两条指令无法执行

  • 问题2解决方案:直接关闭地址随机化即可

  • 问题3:在注入shellcode实验中,没有显示进程号

-问题3解决方案: 在前一个终端连续输入回车键,进程就会结束,应只按一次回车键。

成功:

四、学习感悟、思考等

通过这次实验,我用操作和实践加深了对课程上所学内容的理解。本次实验收获很大,让我重复熟悉了Linux操作,初浅理解了Bof的原理以及gdb和perl的使用。在实验过程中,也碰到了很多问题,一一解决问题的过程也是学习的过程,也反映出了“实践出真知”的道理。本次实验学习到了怎样用多种方法运行pwn1代码,让我受益匪浅。

参考资料

posted @ 2022-03-24 20:57  20192418zx  阅读(21)  评论(0编辑  收藏  举报