20155312张竞予 Exp1 PC平台逆向破解(5)M
2018-03-11 23:11
274 查看
Exp1 PC平台逆向破解(5)M
目录
实验内容手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数。
利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数。
注入一个自己制作的shellcode并运行这段shellcode。
实验步骤及结果
问题及解决方案
参考资料
实验内容
实验知识概要
1.掌握NOP, JNE, JE, JMP, CMP汇编指令的机器码通过反汇编指令
objdump -d 20155312zjy查看可执行文件20155312zjy的反汇编代码和对应的机器码,如下图所示:
我们不难发现:
NOP汇编指令的机器码是“90”
JNE汇编指令的机器码是“75”
JE 汇编指令的机器码是“74”
JMP汇编指令的机器码是“eb”
CMP汇编指令的机器码是“39”
想要了解其他指令的机器码,可以参考汇编指令和机器码的对应表
2.掌握反汇编与十六进制编程器
反汇编指令是“objdump -d objfile” ,其中
-d参数是
从objfile中反汇编那些特定指令机器码的section,和它类似的还有
-D参数,但它反汇编所有section。
如果我们想要以全屏幕的方式按页显示反汇编的内容,可以利用“管道”,即在反汇编指令后添加
| more,这样我们就可以利用more的一些快捷键,如:Enter(向下翻滚一行),空格(向下滚动一屏),Q(退出命令)
十六进制编程器,是用来以16进制视图进行文本编辑的编辑工具软件。其实我们只需要用各系统都兼容的“vim”编辑器就可以实现十六进制编辑的功能。具体步骤如下:
① 输入命令
vi 20155312zjy查看可执行文件内容,发现大部分是我们没法理解的乱码;
② 按esc后输入
:%!xxd将显示模式切换为16进制模式;
③ 进行相关操作后,输入
:%!xxd -r转换16进制为原格式。
返回目录
实验步骤及结果
一、手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数用反汇编指令
objdump -d 20155312zjy指令查看可执行文件20155312zjy(pwn1的副本)的反汇编结果;
锁定需要改的目标代码
80484b5: e8 d7 ff ff ff call 8048491 <foo>
对比getShell函数的地址
0804847d和foo函数的地址
08048491,可以发现两地址之差为十六进制“14”;
分析call汇编指令的机器码,可以锁定e8这个字节为代码部分,代表call这个指令,后面的“d7 ff ff ff”这四个字节为数值部分,代表指令跳转时需要与“eip”寄存器相加的偏移量;
由于数值存储方式为小端方式,所以锁定需要改的字节为“d7”,将它与地址差“14”做减法运算后的值为“c3”;
用vim编辑器打开20155312zjy文件
vi 20155312;
将该文件转换为十六进制显示
:%!xxd;
用
/e8d7查找需要修改的内容;
修改d7为c3;
转换16进制为原格式:
:%!xxd -r;
保存并退出;
反汇编看一下,发现call指令正确调用getShell;
运行zjy20155312,截图如下:
返回目录
二、利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数
实验步骤如下:
分析代码,发现foo函数存在Buffer overflow漏洞
返回目录
三、注入一个自己制作的shellcode并运行这段shellcode
返回目录
问题及解决方案
问题1:./pwn1执行pwn1会出现[ bash: ./pwn1:没有那个文件或目录]的提示,但是ls命令又能看到存在pwn1文件。
解决:参考教程64位Kali无法顺利执行pwn1问题的解决方案,总结过程如下:
①修改更新源sources.list
添加下列更新源到
/etc/apt/sources.list文件
```
#阿里云kali源
deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
deb-src http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
deb http://mirrors.aliyun.com/kali-security kali-rolling/updates main contrib non-free
deb-src http://mirrors.aliyun.com/kali-security kali-rolling/updates main contrib non-free
#中科大kali源
deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
deb-src http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
deb http://mirrors.ustc.edu.cn/kali-security kali-current/updates main contrib non-free
deb-src http://mirrors.ustc.edu.cn/kali-security kali-current/updates main contrib non-free
```
对软件进行一次整体更新
apt-get clean apt-get update apt-get upgrade
②安装32位运行库
apt-get install lib32ncurses5
运行后会等待一会会出现如下提示界面,这时按一下回车就好了:
问题2:在解决问题1时,运行
apt-get upgrade时提示“有未能满足的依赖关系”
解决:按照系统提示,运行
apt --fix-broken install即可,如下图所示,待执行完毕进行后续操作即可。
返回目录
参考资料
64位Kali无法顺利执行pwn1问题的解决方案汇编指令和机器码的对应表
相关文章推荐
- 20155306 白皎 《网络攻防》Exp1 PC平台逆向破解——逆向与Bof基础
- 2017-2018-2 《网络对抗技术》 20155319 第二周 Exp1 PC平台逆向破解(5)M
- 20155326刘美岑 《网络对抗》Exp1 PC平台逆向破解
- Exp1 PC平台逆向破解(5)M
- 20155227《网络对抗》Exp1 PC平台逆向破解(5)M
- 20155208徐子涵 《网络对抗》Exp1 PC平台逆向破解
- 2017-2018-2 20155303『网络对抗技术』Exp1:PC平台逆向破解
- 20155213 《网络攻防》 Exp1 PC平台逆向破解
- 20155203 杜可欣《网络对抗技术》Exp1 PC平台逆向破解
- 2017-2018-2 《网络对抗技术》 20155322 第二周 Exp1 PC平台逆向破解(5)M
- 2017-2018-2 20155315《网络对抗技术》Exp1:PC平台逆向破解
- 20155321 《网络攻防》 Exp1 PC平台逆向破解(5)M
- 2017-2018-2 《网络对抗技术》 20155302 第二周 Exp1 PC平台逆向破解(5)M
- 2018-3-7 20155317 王新玮 Exp1 PC平台逆向破解(5)M
- 网络对抗技术 2017-2018-2 20152515 Exp1 PC平台逆向破解(5)M
- 20155338《网络对抗技术》 Exp1 PC平台逆向破解
- 20145302张薇《网络对抗技术》PC平台逆向破解
- 20145219《网络对抗技术》PC平台逆向破解之逆向与Bof基础
- 20145312 《网络对抗》PC平台逆向破解:注入shellcode和 Return-to-libc 攻击实验
- 20145336张子扬 《网络对抗技术》 PC平台逆向破解