一、实验内容

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. 关于rocketmq的配置启动

    #集群名称brokerClusterName=rocket-nameserver#broker-a,注意其它两个分别为broker-b和broker-cbrokerName=broker-a#brok ...

  2. webstorm开发微信小程序

    参考博客:https://www.cnblogs.com/pansidong/articles/7563155.html

  3. easyExcel导出excel的简单使用

    easyExcel导出excel的简单使用 Java解析.生成Excel比较有名的框架有Apache poi.jxl.但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定 ...

  4. SQL SERVER服务器登录名、角色、数据库用户、角色、架构的关系

    原创链接:https://www.cnblogs.com/junfly/articles/2798023.html SQL SERVER 基础教程中关于服务器登录名.服务器角色.数据库用户.数据库角色 ...

  5. 利用crontab定时提交svn遇到的几个问题

    交待下背景...公司开发组只有技术经理有服务器和数据库权限,还只是开发环境的..因为工作安排和权限限制,测试同学上线的时候,需要本人帮开发组的部分同事review代码并把代码提交到trunk.一开始手 ...

  6. GBDT原理及利用GBDT构造新的特征-Python实现

    1. 背景 1.1 Gradient Boosting Gradient Boosting是一种Boosting的方法,它主要的思想是,每一次建立模型是在之前建立模型损失函数的梯度下降方向.损失函数是 ...

  7. .net 笔试题目

    2.1.using关键字有什么用?什么是IDisposable? using可以声明namespace的引入,还可以实现非托管资源的释放,实现了IDisposiable的类在using中创建,usin ...

  8. Java虚拟机运行时内存区域简析

    figure:first-child { margin-top: -20px; } #write ol, #write ul { position: relative; } img { max-wid ...

  9. redhat7.4切换yum源为免费源

    1.redhat是Linux系统中付费的企业版,虽然安装什么是免费的,但是需要注册. 如果你有注册码,暂请出门左拐(我没有注册码,所以我也不会注册,不用往下看了). Linux系统收费版:RedHat ...

  10. springboot 共享session

    1.pom添加jar依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifact ...