• 20145306 逆向与Bof基础


    逆向与Bof基础 实践

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

    本次实践的对象是一个名为pwn1的linux可执行文件。 显任何用户输入的字符串。

    该程序同时包含另一个代码片段,getShell,会返回一个可用Shell。正常情况下这个代码是不会被运行的。

    通过修改机器指令是先运行shell代码片段:

    将可执行文件zwj反汇编:objdump -d zwj | more

    可以看到main函数中call 8048491 对foo函数进行了调用,对应的机器指令e8 d7 ff ff ff ,,e8即跳转之意,使eip(指向下一条指令)为eip + d7ffffff,便会跳过当前指令的下一条指令,执行eip+d7ffffff指向指令。

    想调用getShell,只要修改“d7ffffff”为,"getShell-80484ba"对应的补码c3ffffff。 

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

    反汇编:

    用gdb调试来尝试输入确定哪几个字符会覆盖掉返回地址:

    尝试输入1,2,3,4,5各十个,结果显示 代码段错误,查看eip的值,确定返回地址的位置在十个4之中。

    将4之前的数字不变,十个4变为123456789a,构造新的输入。查看eip寄存器的值,确定返回地址的位置。

    构造合适的输入。由于我们没法通过键盘输入x7dx84x04x08,所以先生成包括这样字符串文件。然后将input通过管道符“|”,作为zwj的入造成缓存区溢出,刚好将shell的地址覆盖到了返回地址上,运行shell。

  • 相关阅读:
    MERGE INTO
    StringBuffer 去掉最后一个字符
    spring boot 在线项目创建
    centos rpm包下载地址
    maven 添加jdbc6
    初识算法----二分查找
    初识递归
    爬虫----抽屉新热榜
    python基础 字典
    0002 两数相加
  • 原文地址:https://www.cnblogs.com/besti145306/p/6480842.html
Copyright © 2020-2023  润新知