一、实验内容

1、掌握NOP, JNE, JE, JMP, CMP汇编指令的机器码(0.5分)

2、掌握反汇编与十六进制编程器 (0.5分)

3、能正确修改机器指令改变程序执行流程(0.5分)

4、能正确构造payload进行bof攻击(0.5分)

二、实践目标

实验一:

1、本次实践的对象是一个名为pwn1的linux可执行文件,如图

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

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

  我们实践的目标就是想办法运行这个代码片段。我们将学习两种方法运行这个代码片段,然后学习如何注入运行任何Shellcode

三、实验步骤

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

通过修改main函数中的call指令跳转的地址,使其本来该跳转到foo函数时,跳转到getshell函数,从而运行getshell函数。

任务一:

1、输入指令objdump -d pwn1反汇编文件 pwn1,结果如图所示:

分析结果中的main、foo、getShell函数,call 8048491 是汇编指令,将调用位于地址8048491处的foo函数;

其对应机器指令为e8 d7 ff ff ff,e8即跳转之意;

call指令调用函数对应的机器指令为:“e8”+“该函数相对于EIP值的偏移量”,让main函数调用getShell,修改“d7ffffff”为,

“getShell地址 - EIP(80484ba)”对应的补码就行(804847d - 80484ba),得到结果为c3 ff ff ff。

2、输入指令vi pwn1,文件以ASCII码的形式出现;

3、输入:%!xxd调用命令行,将文件转换为16进制,如图所示:

4、输入/d7,查找要修改的内容:

5、输入i转换为插入模式,d7修改为c3:

实验二:

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

•进行反汇编,分析程序有什么漏洞。



2,•通过分析可以知道该程序在foo函数中有读入字符串,但是只预留了一定字节数的空间,那么超出部分就会造成溢出有Buffer overflow漏洞,借助缓冲区溢出的攻击原理,我们需要的就是覆盖返回地址。那么我们需要知道输入字符串哪几个字符会覆盖返回地址。

3,•进行gdb调试,输入一段较长的数字,我这里选取的是1111111122222222333333334444444455555555,用info r命令查看此时是否缓冲区溢出,由下图可知道此时的eip寄存器所存储的值是0x35是5的ASCII 值,所以可以知道,此时该字符串中的某个5开始便缓冲区溢出了。



实验三:

Shellcode入门

Shellcode基础

【干货分享】手把手简易实现shellcode及详解

1.在对待一些有BOF漏洞的程序时,这种方法应该是最具有普适性的吧,毕竟不是所有的文件里面都会藏着一个getShell。

2.首先是一些准备工作,通过以下的操作设置堆栈可执行,关闭地址随机化。

四:实验感想

本次实验做的对象是一个名为pwn1的linux可执行文件还有利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数

等等由于自己基础薄弱再加上理解能力有限在实验中遇到了很多问题,有些问同学,有些则在网上查,但别人的时间也是有限的,所以任务三没做完。只做了一和二。下次争取全部做完。

2018-2019-2 20165239其米仁增《网络对抗》Exp1 PC平台逆向破解的更多相关文章

  1. 2018-2019 20165226 网络对抗 Exp1 PC平台逆向破解

    2018-2019 20165226 网络对抗 Exp1 PC平台逆向破解 目录 一.逆向及Bof基础实践说明 二.直接修改程序机器指令,改变程序执行流程 三.通过构造输入参数,造成BOF攻击,改变程 ...

  2. 20155305《网络对抗》PC平台逆向破解(二)

    20155305<网络对抗>PC平台逆向破解(二) shellcode注入 1.shellcode shellcode是一段代码,溢出后,执行这段代码能开启系统shell. 2.构造方法 ...

  3. 20155311《网络对抗》PC平台逆向破解(二)

    20155311<网络对抗>PC平台逆向破解(二) shellcode注入 什么是shellcode? shellcode是一段代码,溢出后,执行这段代码能开启系统shell. 前期准备- ...

  4. 2015531 网络攻防 Exp1 PC平台逆向破解(5)M

    2015531 网络攻防 Exp1 PC平台逆向破解(5)M 实践目标 本次实践的对象是linux的可执行文件 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串 ...

  5. 20145330 《网络对抗》PC平台逆向破解:注入shellcode 和 Return-to-libc 攻击实验

    20145330 <网络对抗>PC平台逆向破解:注入shellcode 实验步骤 1.用于获取shellcode的C语言代码 2.设置环境 Bof攻击防御技术 需要手动设置环境使注入的sh ...

  6. 20145221《网络对抗》PC平台逆向破解

    20145221<网络对抗>PC平台逆向破解 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户 ...

  7. 20155307《网络对抗》PC平台逆向破解(二)

    20155307<网络对抗>PC平台逆向破解(二) shellcode注入 什么是shellcode? shellcode是一段代码,溢出后,执行这段代码能开启系统shell. 前期准备- ...

  8. 20145312 《网络对抗》PC平台逆向破解:注入shellcode和 Return-to-libc 攻击实验

    20145312 <网络对抗>PC平台逆向破解:注入shellcode和 Return-to-libc 攻击实验 注入shellcode 实验步骤 1. 准备一段Shellcode 2. ...

  9. 20145201李子璇《网络对抗》PC平台逆向破解

    20145201<网络对抗>PC平台逆向破解 准备阶段 下载安装execstack. 获取shellcode的c语言代码 设置堆栈可执行 将环境设置为:堆栈可执行.地址随机化关闭(2开启, ...

  10. 20145219《网络对抗》PC平台逆向破解

    20145219<网络对抗>PC平台逆向破解 shellcode注入 1.shellcode shellcode是一段代码,溢出后,执行这段代码能开启系统shell. 2.构造方法 (1) ...

随机推荐

  1. laravel windows安装

    第一步安装composer 下载地址:https://getcomposer.org/ 第二步:更改laravel下载地址 选项一.全局配置(推荐) $ composer config -g repo ...

  2. boto3库限速

    # -*- coding: utf-8 -*- import boto3 from boto3.s3.transfer import TransferConfig # from s3transfer. ...

  3. 实验一 Java开发环境的熟悉(Linux + Idea) 20175301李锦然

    https://gitee.com/ShengHuoZaiDaXue/20175301.git 实验一 Java开发环境的熟悉(Linux + Idea) 实验内容 1.使用JDK编译.运行简单的Ja ...

  4. Jenkins实践之入门体验

    官网:https://jenkins.io/ 持续集成,快速发布是DevOps实践的最好方式. 目录 准备工作 下载/安装/启动 基础配置 插件配置 构建第一个Java项目 部署项目 准备工作 在使用 ...

  5. 使用 ES.later 的装饰器作为 mixin

    原文链接:http://raganwald.com/2015/06/26/decorators-in-es7.html   在函数式 mixin 中,我们讨论了将功能糅合进 JavaScript 类中 ...

  6. DOS:第二天

    今天介绍 dir ------------ dir (directory,目录)是一个条列档案及目录的命令行界面指令,在CP/M.VMS.DOS.OS/2.Singularity及Microsoft ...

  7. 你们都在用IntelliJ IDEA吗?或许你们需要看一下这篇博文

    写在前面 以前一直用的elipce,如今入坑IntelliJ IDEA,没想到啊.深深的爱上了它,强大到无所不能: "工欲善其事必先利其器",IntelliJ IDEA作为一个非常 ...

  8. Python+Selenium+Unittest框架使用——Selenium——定位元素(二)

    1.定位元素(id.name.class.link.partial link) (1)find_element_by_id() 用百度定位测试,用firebug查看定位元素 ,输入框的id为“kw”, ...

  9. selenium定位方式-Xpath使用方法

    什么是Xpath? XPath是XML的路径语言,通俗一点讲就是通过元素的路径来查找到这个标签元素. 一. 在火狐浏览器上安装Xpath 方法如下: 1.使用 Firefox 访问 https://a ...

  10. 解锁技能:sass + node-sass多页面应用编译(转载)

    传送门:https://blog.csdn.net/wx11408115/article/details/78023466