• 20145334赵文豪《网络对抗》-逆向及Bof基础实践


    本次实践的对象是一个名为pwn1的linux可执行文件。

    该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串。

    该程序同时包含另一个代码片段,getShell,会返回一个可用Shell。正常情况下这个代码是不会被运行的。我们实践的目标就是想办法运行这个代码片段。

    我们将学习两种方法

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

    基础知识

    该实践需要同学们熟悉Linux基本操作,能看懂常用指令,如管道(|),输入、输出重定向(>)等。

    理解Bof的原理。

    能看得懂汇编、机器指令、EIP、指令地址。

    会使用gdb,vi。

    以下操作是在vi内
    1.按ESC键
    2.输入如下,将显示模式切换为16进制模式
    :%!xxd
    3.查找要修改的内容
    /e8d7
    4.找到后前后的内容和反汇编的对比下,确认是地方是正确的
    5.修改d7为c3
    6.转换16进制为原格式
    :%!xxd -r
    7.存盘退出vi
    :wq

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

    vi是一种文本编辑器,打开后显示的是ASCⅡ码。按下ESC键,输入“:%!xxd”,将显示模式换为16进制模式

    调用getShell,只要修改“d7ffffff”为c3ffffff。

    成功进入shell

    二:通过构造输入参数,造成BOF攻击,改变程序执行流

    十六进制的35换算成ASCⅡ码是5.于是我便得知如何进一步改动。我将“55555555”改成“12345678”


    将input的输入,通过管道符“|”,作为pwn1的输入

  • 相关阅读:
    深拷贝与浅拷贝
    图片旋转插件
    promise 小抄
    github fork项目更改后与原作者同步更新
    eslint 的配置
    css规范
    Object类
    BigIntager
    System类
    Math类和Random类
  • 原文地址:https://www.cnblogs.com/bestizwh/p/6481545.html
Copyright © 2020-2023  润新知