实验目标

学习两种方法运行代码片段,并学习如何注入运行任何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段钊阳的更多相关文章

  1. 20155324《网络对抗》Exp1 PC平台逆向破解(5)M

    20155324<网络对抗>Exp1 PC平台逆向破解(5)M 实验目标 本次实践的对象是一个名为~pwn1~的~linux~可执行文件. 该程序正常执行流程是:~main~调用~foo~ ...

  2. 20165221 《网络对抗技术》EXP1 PC平台逆向破解

    20165221 <网络对抗技术>EXP1 PC平台逆向破解 一.实验内容 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函 ...

  3. 2018-2019-2 网络对抗技术 20165325 Exp1 PC平台逆向破解

    2018-2019-2 网络对抗技术 20165325 Exp1 PC平台逆向破解(BOF实验) 实验有三个模块: (一)直接修改程序机器指令,改变程序执行流程: (二)通过构造输入参数,造成BOF攻 ...

  4. 2018-2019-2 20165206《网络对抗技术》Exp1 PC平台逆向破解

    - 2018-2019-2 20165206<网络对抗技术>Exp1 PC平台逆向破解 - 实验任务 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:mai ...

  5. Exp1 PC平台逆向破解 20165235 祁瑛

    Exp1 PC平台逆向破解 20165235 祁瑛 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件.该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字 ...

  6. 2018-2019-2 20165317《网络对抗技术》Exp1 PC平台逆向破解

    2018-2019-2 20165317<网络对抗技术>Exp1 PC平台逆向破解 实验目的 掌握NOP, JNE, JE, JMP, CMP汇编指令的机器码 NOP:无作用,英文&quo ...

  7. 2018-2019-2 网络对抗技术 20165336 Exp1 PC平台逆向破解

    2018-2019-2 网络对抗技术 20165336 Exp1 PC平台逆向破解 1. 逆向及Bof基础实践说明 1.1 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件.该程序正常 ...

  8. 2018-2019-2 20165236郭金涛《网络对抗》Exp1 PC平台逆向破解

    2018-2019-2 20165236郭金涛<网络对抗>Exp1 PC平台逆向破解 一.实验内容 1.掌握NOP, JNE, JE, JMP, CMP汇编指令的机器码(0.5分) 2.掌 ...

  9. 2018-2019-2 网络对抗技术 20165305 Exp1 PC平台逆向破解

    2018-2019-2 网络对抗技术 20165305 Exp1 PC平台逆向破解 实验1-1直接修改程序机器指令,改变程序执行流程 先输入objdump -d 20165305pwn2查看反汇编代码 ...

随机推荐

  1. 可视化库-Matplotlib-3D图(第四天)

    1. 画三维图片图 axes = Axes3D(fig)这一步将二维坐标转换为三维坐标,axes.plot_surface() import matplotlib.pyplot as plt impo ...

  2. 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 ...

  3. JSP的动态导入

    <body> <!-- 动态引入 他们引入的相互独立的代码段 所以可以运行 代码段之间存在重复的变量 --> this is a test dy include 01 < ...

  4. 词项邻近 & 停用词 & 词干还原

    [词项邻近] 邻近操作符(proximity)用于指定查询中的两个词项应该在文档中互相靠近,靠近程度通常采用两者之间的词的个数或者是否同在某个结构单元(如句 子或段落)中出现来衡量. [停用词] 一些 ...

  5. 关于mybatis框架的总结【转载】

    原文地址:https://www.cnblogs.com/xiaotie666/p/LiujinMybatisSummary.html 此文为转载.请支持原作者. 最近在学习MyBatis框架,我在这 ...

  6. codeforces:818G Four Melodies分析

    题目 题目大意是有一组自然数v1,...,vn,要求在其中找到四个非空子序列(从原来的自然数序列中挑选一部分数,并按原先后关系排序),这些子序列互不相交,且每个子序列中的前后元素的值要么差值的绝对值为 ...

  7. SpringBoot中使用LoadTimeWeaving技术实现AOP功能

    目录 1. 关于LoadTimeWeaving 1.1 LTW与不同的切面织入时机 1.2 JDK实现LTW的原理 1.3 如何在Spring中实现LTW 2. Springboot中使用LTW实现A ...

  8. Web页面显示日期和动态时刻脚本

    <script language="JavaScript" type="text/JavaScript">    <!--        tm ...

  9. nat转发

    http://www.revsys.com/writings/quicktips/nat.html https://www.alibabacloud.com/zh/product/nat?spm=a3 ...

  10. Redhat安装python环境(readline模块)

    多次尝试,发现linux下安装软件: yum install readline-devel readline patch yum update python -y # 这步很重要,修复了报错 pip3 ...