首页 技术 正文
技术 2022年11月24日
0 收藏 486 点赞 3,994 浏览 1095 个字

20144303石宇森《网络对抗》逆向及Bof基础

一、实践目标

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

我们将学习两种方法:

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

二、实践过程

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

1、利用cp指令将原来的pwn1复制到20144303,之前的pwn1作为备份

2、使用指令objdump -d 20145215 | more对目标文件进行反汇编

20144303石宇森《网络对抗》逆向及Bof基础

3、分析三个核心函数main、foo、getshell反汇编结果

20144303石宇森《网络对抗》逆向及Bof基础

20144303石宇森《网络对抗》逆向及Bof基础

20144303石宇森《网络对抗》逆向及Bof基础

4、程序正常运行时是不会执行getShell函数的,而我们的目的就是想让程序调用getShell,因此就要想办法让call指令跳转到getShell的起始地址执行,只要修改“d7ffffff”为"getShell-80484ba"对应的补码就行。用Windows计算器,直接47d-4ba就能得到补码,是c3ffffff。

5、接下来就对可执行文件进行修改,先输入指令vi 20144303,接着输入:%!xxd,将显示模式切换为16进制模式;在16进制数中找到e8d7ffffff,按i将模式改为插入模式,然后把d7改为c3

20144303石宇森《网络对抗》逆向及Bof基础

6、修改完后,输入:%!xxd -r 返回原来的格式,之后输入:wq退出

7、再次对20144303进行反汇编,查看结果,调用函数以及被修改为getshell

20144303石宇森《网络对抗》逆向及Bof基础

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

1、先重新复制一个20144303文件

2、输入./20144303执行程序,尝试输入一个较大的字符串使其溢出。

20144303石宇森《网络对抗》逆向及Bof基础

3、在gdb输入那个较长的字符串执行程序,输入info r 观察寄存器eip中的值。发现是最后输入的5个7中的最后三位溢出。所以执行程序时最多输入32个字符是安全的。那么就只需要把32个字节之后加上getshell的内存地址即可完成攻击

20144303石宇森《网络对抗》逆向及Bof基础

4、输入perl -e 'print "11111222223333344444555556666612\x7d\x84\x04\x08\x0a"' > input来构造一个特殊的输入值

20144303石宇森《网络对抗》逆向及Bof基础

5、输入xxd input观察input文件的内容

20144303石宇森《网络对抗》逆向及Bof基础

6、输入(cat input;cat) | ./20144303将其输入,完成实验

20144303石宇森《网络对抗》逆向及Bof基础

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,440
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,857
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,695
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,450
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,096
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,248