一、实验内容

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. (N叉树 递归) leetcode 590. N-ary Tree Postorder Traversal

    Given an n-ary tree, return the postorder traversal of its nodes' values. For example, given a 3-ary ...

  2. idea代码出现Usage of API documented as @since 1.8+ less... (Ctrl+F1)

    问题: Usage of API documented as @since 1.8+ less... (Ctrl+F1) This inspection finds all usages of met ...

  3. GIT-windows系统部署gitblit服务器

    windows系统部署 gitblit 服务器 1. 安装JAVA环境 下载Java,下载地址:http://www.java.com/zh_CN/ 安装Java.安装步骤不再详述.      配置J ...

  4. SpringMVC生命周期,SpringMVC运行流流程

    SpringMVC详细运行流程图 SpringMVC运行原理 1. 客户端请求提交到DispatcherServlet2. 由DispatcherServlet控制器查询一个或多个HandlerMap ...

  5. 使用hql动态创建对象问题

    前段时间由于需求要添加报表数据,调整ireport后,打印pdf文件出现数据错位的情况,调试发现不是ireport问题,就查看了后台传送的数据,最后发现传送的对象属性值已经就是错位的,那就是获取对象时 ...

  6. swift 4 生成随机数的内置方法汇总

    第一种是drand48(),不接收参数, 返回的类型是Double. 就返回 0到1之间的Double类型的随机数.举个例子: //每次点击button,button 的颜色会随机变换. class ...

  7. 《B2C商城》电商平台搭建流程分析

    商城网站建设在当今互联网时代中是非常重要的.商城网站,是企业产品展示.品牌宣传与消费者互动交流的一个平台,利用好这样的一个平台,就能占得先机.那么问题来了,商城网站如何建设呢?这对于企业来说真的是一个 ...

  8. MyEclipse打不开 报xxxxxx. log。

    1.找到MyEcliPse安装目录下configuration文件夹 打开 2.删除org.eclipse.update这个文件夹 3.再打开org.eclipse.osgi/.manager 4.删 ...

  9. go [第一篇]初识

    [第一篇] 简介 Go 是一个开源的编程语言,它能让构造简单.可靠且高效的软件变得容易. Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发 ...

  10. 贯穿RobotFramework框架 - 关键字(一) 最全面的疏理

    在RF中,关键字是一个非常重要的存在.想做任何事情,都是通过关键字来实现的. 这篇文章对RobotFramework中的关键字做个整理.大概分为以下几点内容: 1.什么是关键字 2.关键字来自哪里.有 ...