zoukankan      html  css  js  c++  java
  • 20145235李涛《网络对抗》逆向及Bof基础

    • 上学期实验楼上做过这个实验

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

      • 首先进行反汇编
      •  
      • 我们所要修改的是,程序从foo返回,本来要返回到80484ba,而我们要把80484ba修改为getshell的首地址,所以通过vim直接查看可执行文件,并找到程序从foo返回的二进制代码,并将其替换,使之跳转到函数getshell。

      •  这样程序就跳转到了getshell

    • 缓冲区溢出攻击

      • 在调用foo函数时,输入的字符会存储在foo函数的栈内,程序会提前申明缓存区的大小,如果数据过大,超过缓冲区的大小,显然会溢出,然而我们知道,数据是从低地址向高地址存储,堆栈所存储的返回地址也在高地址,如果我们的数据恰好覆盖了返回地址,那么程序的执行就会发生改变,如果将返回地址修改为getshell的首地址,那么调用完fool之后,就会调用getshell,而不会返回main函数了
      • 通过尝试,当输入28个字符时就会发生溢出
    • 感想

      • 上学期做过缓冲区溢出的实验,是在实验楼上面进行的。相比较实验楼上的实验,本次实验在操作上面没有实验楼的难,但有了一些新的收获。我觉得直接修改可执行文件这个方法有点强,哈哈,简单直接。构造参数这个方法和实验楼的原理大致相同。通过这几次实验,发现缓冲区溢出攻击的原理简单,但具体操作的方法却不简单,而且多种多样,可见对不同的程序要用不同的方式去攻击。
  • 相关阅读:
    背景透明的static控件
    MFC应用程序配置不正确解决方案
    #pragma once与 #ifndef的区别
    一种新颖的流程控制方式
    DbgView.exe的应用和使用类
    内存对齐的一点个人理解
    MFC下实现透明位图
    结束已知应用程序名的进程
    基本线程编程
    Linux下PCI设备驱动程序开发的经典文章
  • 原文地址:https://www.cnblogs.com/20145235litao/p/6505972.html
Copyright © 2011-2022 走看看