• 20155316 Exp1 PC平台逆向破解(5)M


    前绪

    实验收获与感想

    • 初步从三个途径了解了什么是缓冲区溢出以及如何简单实现它,对汇编与反汇编有更直观的了解。

    什么是漏洞?漏洞有什么危害?

    • 漏洞是指机器体制设计时所没有顾及到的、可以被利用的bug,放任漏洞可能会被他人利用、入侵系统。

    NOP, JNE, JE, JMP, CMP汇编指令的机器码

    指令 解释
    NOP 空指令;运行该指令时单片机什么都不做,但是会占用一个指令的时间;当指令间需要有延时(给外部设备足够的响应时间;或是软件的延时等),可以插入“NOP”指令
    JNE 条件转移指令;ZF标志位为0时跳转
    JE 条件转移指令;ZF标志位为1时跳转
    JMP 无条件跳转指令;可转到内存中任何程序段。转移地址可在指令中给出,也可以在寄存器中给出,或在储存器中指出
    CMP 该指令用于(通过两数相减的方法)比较两个数的大小,同时会更新标志寄存器

    改机器指令

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

    操作思路

    总思路

    • 通过反汇编查找含有跳转指令的汇编行,修改该部分的机器代码使之跳转至getShell函数(其中getShell等函数地址也通过反汇编查询)

    分布思路

    反汇编查询相关指令行
    • EIP:80484ba +d7ffffff= 80484ba-0x29正好是8048491(foo首地址)这个值

    通过vi编辑器修改相应部分代码
    • 退出编辑前记得将16进制转换为原格式 :%!xxd -r

    执行程序,比较修改前后效果

    简单BOF注入

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

    操作思路

    总思路

    • 利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数。

    分布思路

    手动测试缓冲区长度
    • 找到1234覆盖了返回地址

    用getshell的地址覆盖返回地址
    • 通过构造一个含16进制getshell地址的字符串文件,将字符串注入缓冲区
    • (地址由反汇编查看)

    注入shellcode

    操作思路

    总思路

    • 注入一个shellcode并运行这段shellcode。

    分布思路

    准备一个shellcode

    x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x50x53x89xe1x31xd2xb0x0bxcdx80

    修改设置
    构造payload
    • 结构:anything+retaddr+nops+shellcode

    • 首先输入攻击命令

    • 找到进程号32549

    • 用gdb进行调试,找到注入buf的内存地址

    • 地址为0xffffd2f0

    • 将地址改为0xffffd2f0

    • 攻击成功

  • 相关阅读:
    【BZOJ1854】游戏[SCOI2009](神奇贪心+并查集)
    P4177 [CEOI2008]order(网络流)最大权闭合子图
    P2472 [SCOI2007]蜥蜴(网络流)
    P2877 [USACO07JAN]牛校Cow School(01分数规划+决策单调性分治)
    bzoj3437 小P的牧场(斜率优化dp)
    P3628 [APIO2010]特别行动队(斜率优化dp)
    P3648 [APIO2014]序列分割(斜率优化dp)
    P4027 [NOI2007]货币兑换(斜率优化dp+cdq分治)
    P2365 任务安排 / [FJOI2019]batch(斜率优化dp)
    P3195 [HNOI2008]玩具装箱TOY(斜率优化dp)
  • 原文地址:https://www.cnblogs.com/protectmonarch/p/8604327.html
Copyright © 2020-2023  润新知