Exp1 PC平台逆向破解 20164323段钊阳
实验目标
学习两种方法运行代码片段,并学习如何注入运行任何Shellcode。
三个实验内容如下:
1.手工修改可执行文件,改变程序执行流程,直接跳转到getshell函数
2.利用foo函数的bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getshell函数
3.注入一个自己制作的shellcode并运行这段shellcode
做好前期的一些准备工作,替换更新换,导入公钥,安装execstack,包括pwn文件的权限(chmod a+x pwn1),成功运行pwn文件,然后复制三份文件,开始实验


实验一.对pwn1文件进行反汇编 objdump -d pwn1,查看代码,发现主函数跳转的是8048491,我们需要把它改成804847d跳转到getshell函数,根据偏移量计算,把d7改成c3,vi pwn1 进入编辑界面 :%!xxd转成16进制格式 /e8 d7 跳转,输入i进行修改 :%!xxd -r 改成原格式,:wq进行保存



然后执行./pwn1发现修改成功,执行getshell

实验2 对pwn2文件进行反汇编,了解程序的基本功能

我们需要输入字符串进行测试,看哪些会覆盖到返回地址,用gdb进行调试,发现1234覆盖到返回地址

但是我们输入的时候要输入16进制的数,所以需要构造输入字符串通过管道符|,作为pwn2的输入,实验成功

实验三.实验三有点麻烦,需要前期准备工作,因为我前期工作以为自己已经修改了文件堆栈,但由于重新复制了文件,做了十几次都没有成功,最后重新进行了准备工作,终于成功了,哭了。
构造payload:使用命令perl -e 'print "A" x 32;print "\x04\x03\x02\x01\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
用A来填满缓冲区,以确认,寻找字符串中对应的的4个字节
输入命令 (cat input_shellcode;cat) | ./20165335 注入攻击bof
在另外一个终端进行gdb调试,先使用 ps -ef | grep 20165335寻找进程号
用attach 命令调用·进程
同时,反汇编,在函数return esp指针变化执行后的ret语句出,设置断点
使用info r esp 查看esp寄存器的值,找出shellcode的地址(地址就在指针的后面)
最后,将找到的4个字节的地址填充进去,完成注入,再次运行程序,实现攻击


实验感想;做实验的时候真的碰到很多的问题,本来应该很早完成的,拖了很久,有时候因为自己很蠢输错了代码,结果一直错误。发现实验真的需要很细心,不过虽然这样,实验大概做了十几次了,对实验过程有了更深的了解,同时了解了实验的原理,收获还是很多的。
Exp1 PC平台逆向破解 20164323段钊阳的更多相关文章
- 20155324《网络对抗》Exp1 PC平台逆向破解(5)M
20155324<网络对抗>Exp1 PC平台逆向破解(5)M 实验目标 本次实践的对象是一个名为~pwn1~的~linux~可执行文件. 该程序正常执行流程是:~main~调用~foo~ ...
- 20165221 《网络对抗技术》EXP1 PC平台逆向破解
20165221 <网络对抗技术>EXP1 PC平台逆向破解 一.实验内容 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函 ...
- 2018-2019-2 网络对抗技术 20165325 Exp1 PC平台逆向破解
2018-2019-2 网络对抗技术 20165325 Exp1 PC平台逆向破解(BOF实验) 实验有三个模块: (一)直接修改程序机器指令,改变程序执行流程: (二)通过构造输入参数,造成BOF攻 ...
- 2018-2019-2 20165206《网络对抗技术》Exp1 PC平台逆向破解
- 2018-2019-2 20165206<网络对抗技术>Exp1 PC平台逆向破解 - 实验任务 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:mai ...
- Exp1 PC平台逆向破解 20165235 祁瑛
Exp1 PC平台逆向破解 20165235 祁瑛 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件.该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字 ...
- 2018-2019-2 20165317《网络对抗技术》Exp1 PC平台逆向破解
2018-2019-2 20165317<网络对抗技术>Exp1 PC平台逆向破解 实验目的 掌握NOP, JNE, JE, JMP, CMP汇编指令的机器码 NOP:无作用,英文&quo ...
- 2018-2019-2 网络对抗技术 20165336 Exp1 PC平台逆向破解
2018-2019-2 网络对抗技术 20165336 Exp1 PC平台逆向破解 1. 逆向及Bof基础实践说明 1.1 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件.该程序正常 ...
- 2018-2019-2 20165236郭金涛《网络对抗》Exp1 PC平台逆向破解
2018-2019-2 20165236郭金涛<网络对抗>Exp1 PC平台逆向破解 一.实验内容 1.掌握NOP, JNE, JE, JMP, CMP汇编指令的机器码(0.5分) 2.掌 ...
- 2018-2019-2 网络对抗技术 20165305 Exp1 PC平台逆向破解
2018-2019-2 网络对抗技术 20165305 Exp1 PC平台逆向破解 实验1-1直接修改程序机器指令,改变程序执行流程 先输入objdump -d 20165305pwn2查看反汇编代码 ...
随机推荐
- 可视化库-Matplotlib-3D图(第四天)
1. 画三维图片图 axes = Axes3D(fig)这一步将二维坐标转换为三维坐标,axes.plot_surface() import matplotlib.pyplot as plt impo ...
- Angular: Can't bind to 'ngModel' since it isn't a known property of 'input'问题解决
https://blog.csdn.net/h363659487/article/details/78619225 最初使用 [(ngModel)] 做双向绑定时,如果遇见Angular: Can't ...
- JSP的动态导入
<body> <!-- 动态引入 他们引入的相互独立的代码段 所以可以运行 代码段之间存在重复的变量 --> this is a test dy include 01 < ...
- 词项邻近 & 停用词 & 词干还原
[词项邻近] 邻近操作符(proximity)用于指定查询中的两个词项应该在文档中互相靠近,靠近程度通常采用两者之间的词的个数或者是否同在某个结构单元(如句 子或段落)中出现来衡量. [停用词] 一些 ...
- 关于mybatis框架的总结【转载】
原文地址:https://www.cnblogs.com/xiaotie666/p/LiujinMybatisSummary.html 此文为转载.请支持原作者. 最近在学习MyBatis框架,我在这 ...
- codeforces:818G Four Melodies分析
题目 题目大意是有一组自然数v1,...,vn,要求在其中找到四个非空子序列(从原来的自然数序列中挑选一部分数,并按原先后关系排序),这些子序列互不相交,且每个子序列中的前后元素的值要么差值的绝对值为 ...
- SpringBoot中使用LoadTimeWeaving技术实现AOP功能
目录 1. 关于LoadTimeWeaving 1.1 LTW与不同的切面织入时机 1.2 JDK实现LTW的原理 1.3 如何在Spring中实现LTW 2. Springboot中使用LTW实现A ...
- Web页面显示日期和动态时刻脚本
<script language="JavaScript" type="text/JavaScript"> <!-- tm ...
- nat转发
http://www.revsys.com/writings/quicktips/nat.html https://www.alibabacloud.com/zh/product/nat?spm=a3 ...
- Redhat安装python环境(readline模块)
多次尝试,发现linux下安装软件: yum install readline-devel readline patch yum update python -y # 这步很重要,修复了报错 pip3 ...