20145308 《网络对抗》 逆向及BOF基础实践 学习总结

实践目的

  • 通过两种方法,实现程序能够运行原本并不会被运行的代码

    实践原理

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

    知识点学习总结

    汇编、机器指令

  • 汇编指令与机器指令一一对应

    EIP、指令地址

  • %eip存储指向下一条要执行的指令的地址
  • %ebp存储栈底指针,栈基址
  • %esp存储栈顶指针,始终指向栈顶
  • ESP存储栈底地址,是由ESP在函数调用之前传递给EBP的。等到调用结束之后,EBP会把其地址再次传回给ESP。所以ESP再次指向了函数调用结束后,栈顶的指针

    方法一

    反汇编了解程序

  • 首先将可执行文件pwn1复制另存为文件名为学号20145308的文件并执行,可实现回显输入的字符串的功能

  • 使用objdump -d 20145308 | more命令查看目标文件20145308的反汇编代码
  • getshell

  • foo

  • main

  • 可看到main函数在call 8048491处调用执行foo函数,对应机器码为e8 d7ffffff
  • 想要使main函数在此处改为跳转执行getshell函数,修改d7ffffff(EIP+d7ffffff=foo)c3ffffff(EIP+c3ffffff=getshell)即可

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

  • 使用vi打开20145308,将显示模式切换至16进制模式,并查找到e8 d7
  • d7改为c3,并将模式改回原格式,保存

  • 运行修改后的文件,成功执行getshell

方法二

反汇编了解函数

  • 复制可执行文件pwn120145308lhy

  • 使用objdump -d 20145308lhy | more进行反汇编
  • 目标触发函数getshell

  • 正常运行的可执行函数foo

  • 读入字符串部分函数

确认输入字符串哪几个字符会覆盖到返回地址

  • 输入长度超过缓冲区的字符串

  • 通过查看EIP寄存器的值,发现是5覆盖返回地址

  • 再次输入另一字符串,精确确定是字符串的哪个位置覆盖返回地址

  • 查看EIP寄存器,发现是1234四个数字覆盖返回地址

构造输入字符串

  • 构造用getsell地址覆盖返回地址的字符串

  • 使用16进制格式查看input文件

  • input通过管道符|作为20145308lhy的输入,缓冲区溢出,覆盖返回地址,返回到getshell,截获getshell后输入命令ls成功执行

其他

  • 本次实践使用两种方法实现了使程序执行了getshell,第一种方法为利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数;第二种方法为手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数。通过这次实践复习加深了对上学期学习的Linux命令的理解,也对本次实践所要学习的知识有所掌握

20145308 《网络对抗》 逆向及BOF基础实践 学习总结的更多相关文章

  1. 20145308 《网络对抗》Web安全基础实践 学习总结

    20145308 <网络对抗> Web安全基础实践 学习总结 实验内容 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 基础问题回答 (1)SQL注入攻击原理, ...

  2. 网络对抗实验一 逆向及Bof基础实践

    网络对抗实验一 逆向及Bof基础实践 一.实验目的 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. ...

  3. 20145206邹京儒《网络对抗》逆向及Bof基础实践

    20145206邹京儒<网络对抗>逆向及Bof基础实践 1 逆向及Bof基础实践说明 1.1 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:ma ...

  4. 20145216《网络对抗》逆向及BOF基础实践

    20145216<网络对抗>逆向及BOF基础实践 1 逆向及Bof基础实践说明 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件.该程序正常执行流程是:main调用foo函 ...

  5. 20145327 《网络对抗》逆向及BOF基础实践

    20145327 <网络对抗>逆向及BOF基础实践 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任 ...

  6. 20145204《网络对抗》逆向及bof基础实践

    20145204<网络对抗>逆向及bof基础实践 实践目的说明 实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何 ...

  7. 20145208蔡野 《网络对抗》逆向及BOF基础实践

    20145208蔡野 <网络对抗>逆向及BOF基础实践 逆向及Bof基础实践 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函 ...

  8. 《网络对抗》——逆向及Bof基础实践

    <网络对抗>--逆向及Bof基础实践 原理 利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数. 手工修改可执行文件,改变程序执行流程,直接跳转到g ...

  9. 20145302张薇 《网络对抗技术》逆向及BOF基础实践

    20145302张薇 <网络对抗技术>逆向及BOF基础实践 实验内容 实践对象:名为20145302的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单 ...

随机推荐

  1. datetime函数和random.seed()函数的应用

    一,datetime 在python中datetime是一个库是一个模块也是一个函数,作用很多,这里面只对其做简单的最常用的讲解. 首先返回系统时间 import datetime nowTime=d ...

  2. 已解决(转)关于android - apk(解析错误)解析程序包时出现问题

    如果开发的应用用户较多,那么必须保证应用在多个版本不同的设备上能够正确的运行.这就要求对各个版本比较熟悉,知道在什么版本中加入了什么新的功能或特性.但是Android的版本太多了,是个令人头疼的问题. ...

  3. Selenium基础知识(四)表单切换

    在测试过程中,经常会碰到frame和iframe,嵌套等情况 这种情况下直接通过id,name等等是无法定位到的 好在selenium替我们想到了这个问题switch_to方法解决问题 switch_ ...

  4. Koa中设置中文Cookie值

    默认情况下, 如果 ctx.cookies.set('user', '杨过', { domain: 'xxxx', path: 'xxxx', maxAge: 24 * 60 * 60 * 1000, ...

  5. Unity之如何从fbx提取Animation clip文件

    见代码: static void CreateAnim(string fbx, string target) { AnimationClip src = AssetDatabase.LoadAsset ...

  6. codeforces 979B Treasure Hunt

    题意: 给出三个字符串,每个字符串长度相同,给出n,要求在n轮内,每一个字符串必须改变一个字符. 问最后哪个字符串中拥有最多相同的字符,即美丽度最大. 思路: 首先,很不容易想到的一点是从a变到a,有 ...

  7. Spring boot FastJson

    介绍:FastJson 是ailibaba 的一款解析Json的开源框架 使用方式1 引入jar 包 <dependency>    <groupId>com.alibaba& ...

  8. JDK历史版本下载地址

    JDK历史版本下载地址: http://www.oracle.com/technetwork/java/archive-139210.html -startupplugins/org.eclipse. ...

  9. ID3决策树

    决策树 优点:计算复杂度不高,输出结果易于理解,对中间值的缺少不敏感,可以处理不相关特征数据 缺点:过拟合 决策树的构造 熵:混乱程度,信息的期望值 其中p(xi)是选择分类的概率 熵就是计算所有类别 ...

  10. linux lsof用法

    linux lsof命令详解   简介 lsof(list open files)是一个列出当前系统打开文件的工具.在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可 ...