20145206邹京儒《网络对抗》逆向及Bof基础实践

20145206邹京儒《网络对抗》逆向及Bof基础实践

1 逆向及Bof基础实践说明

1.1 实践目标

本次实践的对象是一个名为pwn1的linux可执行文件。
该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串。
该程序同时包含另一个代码片段,getShell,会返回一个可用Shell。正常情况下这个代码是不会被运行的。我们实践的目标就是想办法运行这个代码片段。

1.2 基础知识

该实践需要同学们熟悉Linux基本操作,能看懂常用指令,如管道(|),输入、输出重定向(>)等。
理解Bof的原理。
能看得懂汇编、机器指令、EIP、指令地址。
会使用gdb,vi。

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

(1)防止操作中出现错误,先把原文件复制,执行文件,结果是输入什么字符串就返现相同的字符串
877170-20170228174842079-1487081605.png

(2)先进行反汇编
877170-20170228175151985-478755353.png

877170-20170228175158220-113431429.png

(3)找到相应修改的位置
877170-20170228175251266-597520017.png

877170-20170228175257673-196542289.png

(4)修改之后
877170-20170228175328751-1934370134.png

(5)再次进行反汇编,运行,成功!
877170-20170228175401407-879145794.png

877170-20170228175409860-361323376.png

877170-20170228175414923-1672155556.png

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

(1)先复制pwn1文件
877170-20170228195500048-1311376842.png
(2)使用GDB调试:
877170-20170228195643860-59811915.png
877170-20170228195654970-1872772853.png
(3)同时查看每个寄存器的值,查看的关键是寄存器eip的值:
877170-20170228195859688-731816747.png
(4)再次调试查看是哪个字符被覆盖到了eip中:
877170-20170228200002876-1745246135.png
877170-20170228200357141-2031340911.png

(5)如果输入字符串1111111122222222333333334444444412345678,那 1234 那四个数最终会覆盖到堆栈上的返回地址,进而CPU会尝试运行这个位置的代码。那只要把这四个字符替换为 getShell 的内存地址,输给5206,5206就会运行getShell。
(6)接下来要确认下字节序(这里是低字节放在高位的大端法),简单说是输入11111111222222223333333344444444\x7d\x84\x04\x08。(前面32字节可以任意输入)
由为我们没法通过键盘输入\x7d\x84\x04\x08这样的16进制值,所以先生成包括这样字符串的一个文件。\x0a表示回车,如果没有的话,在程序运行时就需要手工按一下回车键。
877170-20170228200427235-1215473749.png
(7)可以使用16进制查看指令xxd查看input文件的内容是否如预期:
877170-20170228200458423-1755070873.png
(8)然后将input的输入,通过管道符“|”,作为5206的输入:
877170-20170228200540860-1529864839.png
877170-20170228200549329-1516002233.png

转载于:https://www.cnblogs.com/ZouJR/p/6480705.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/393668.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Haproxy+Keepalived实现负载均衡

HaproxyKeepalived实现负载均衡HAProxy介绍反向代理服务器,支持双机热备支持虚拟主机,但其配置简单,拥有非常不错的服务器健康检查功能,当其代理的后端服务器出现故障, HAProxy会自动将该服务器摘除,故障恢复后再自动将该服务器加入新的1.3引入了frontend,backend;f…

C#使用CLR/C++的DLL间接调用Native C++的DLL

C#使用CLR/C的DLL间接调用Native C的DLL 开发环境:win 7 VS2010 简介:C#的exe使用CLR/C间接调用Native C的DLL. 第一步:创建一个C#的Console Application工程-->命名“ConsoleApplication1”。 第二步:创建一个CLR/C的工程&am…

列表输出循环左移_python 列表推导式(经典代码)(21)

文章首发微信公众号,微信搜索:猿说python截止到目前为止,python基础内容已经学习了50%左右,在学习编程过程中,我们不仅要学习python语法,同时也需要学习如何把自己代码写的更美观,效率更高。一.…

Robot Framework自动化测试(一)--- 安装

所需环境: 1、python 2、robotframework  https://pypi.python.org/pypi/robotframework/2.8.5#downloads 3、wxPython ——>是python的一个GUI库,下面要安装的RIDE是基于这个库开发的,所以要安装 地址:https://wxpython.org…

linux_svn命令操作

转至元数据起始 linux下svn命令大全 1、将文件checkout到本地目录 svn checkout path(path是服务器上的目录)例如:svn checkout svn://192.168.1.1/pro/domain简写:svn co 2、往版本库中添加新的文件 svn add file例如&#xff1a…

html怎么让五张照片并排显示,最考验右脑5张照片,30s内能发现问题都是牛人,PS做不出来...

我们的大脑认定这种空间不可能存在,然而却要忍受眼睛亲眼所见其存在的苦恼。“眼见为实”已经成为错误的判断标准,于是你会感到很过瘾,颠覆的快感。事实上,通过色彩,不仅可以考量人们的视力,更能判断大脑水…

Cloud in Action: Install OpenStack Ocata from scratch

Cloud in Action: Install OpenStack Ocata from scratch薛国锋 xueguofeng2011gmail.comOpenStack can control and manage large pools of compute, storage, and networking resources throughout a datacenter, througha dashboard or via the OpenStack API, and work…

CentOS7配置ip

CentOS7配置ip 安装完centos7,重启就可以与linux第一次接触了。我是最小化安装,所以没有图形界面。登录介面显示发型版本和内核版本: CentOS Linux 7(Core) Kernel 3.10.0-862.e17.x86_64 on an x86_64 下面就是登录提示localhost login。在后面输入roo…

Spring Cloud Config服务端配置细节(一)

上篇文章我们看了Spring Cloud中分布式配置中心的一个基本使用,这里边还涉及到许多细节,本文我们就来看看服务端配置中的一些细节。 本文是Spring Cloud系列的第二十三篇文章,了解前二十二篇文章内容有助于更好的理解本文: 1.使用…

POJ 1797 Heavy Transportation

传送门&#xff1a;http://poj.org/problem?id1797 不想吐槽了&#xff0c;弄了好久才AC 实现代码&#xff1a; #include <cstdio> #include <cstring> #include <algorithm> #include <vector> #include <cstdio> #include <iostream> u…

java8中方法区的内存大小如何设置_从Java8升级到Java11

奇技 指南为什么选择Java11?容器环境支持&#xff0c;GC等领域的增强&#xff0c;仅通过切换到 Java 11 就有 16&#xff05; 的改进。进行了瘦身&#xff0c;更轻量级&#xff0c;安装包体积小。JDK11 是一个长期支持版。1Java11相对于Java8的一些新特性1.变量类型推断Var关…

hive 初认识

结构Hive 是建立在hadoop上的数据仓库架构,它提供了一系列的工具,可以进行数据提取转换加载(这个过程叫做ETL),这是一种可以存储,查询和分析存储在hadoop中的大规模数据的机制.Hive定义了简单的类SQL查询语句 成为hql,他允许数据SQL的用户查询数据.同时 这个语言也允许数据mapr…

计算机组成原理实验读r1,计算机组成原理实验一

计算机组成原理实验一 (5页)本资源提供全文预览&#xff0c;点击全文预览即可全文预览,如果喜欢文档就下载吧&#xff0c;查找使用更方便哦&#xff01;8.90 积分计算机组成原理实验计算机组成原理实验第一章、TEC-5 计算机组成实验箱简介运算器运算器74181通用寄存器通用寄存器…

Spark常见问题解决办法

以下是在学习和使用spark过程中遇到的一些问题&#xff0c;记录下来。 1、首先来说说spark任务运行完后查错最常用的一个命令&#xff0c;那就是把任务运行日志down下来。 程序存在错误&#xff0c;将日志down下来查看具体原因!down日志命令&#xff1a;yarn logs -application…

autosar工具链_Autosar开发与手写代码开发的区别

Autosar开发流程1.BSW开发主要应用工具链&#xff08;Vector等工具&#xff0c;具体可以百度搜索Autosar配置工具&#xff09;来配置&#xff0c;复杂驱动的代码需要手写&#xff0c;但是也要符合Autosar的接口标准&#xff0c;主要包括&#xff0c;CAN通信配置、数字输入配置、…

山东计算机类好的民办大学,2021年山东所有民办大学名单及排名(教育部)

高考考上一个好的大学&#xff0c;是每位考生和家长的一个梦想,但是选择一个适合自己的大学也非常重要。本文高考助手网帮各位考生整理了关于山东本地区所有的民办大学名单、山东所有的民办大学分数线排名、山东民办大学文理科投档线等相关知识&#xff0c;各位考生在填报志愿的…

用例设计:思维导图orExcel

一、 某次紧急发版时使用思维导图来进行了用例的设计&#xff0c;很被导图多分支罗列、在单一分支上层层递进设计模式的吸引&#xff0c;最终看到由版本主题开枝散叶衍发出的结构性用例时非常开心。从此&#xff0c;几个版本的迭代都使用思维导图进行用例设计。 然而部门制度关…

class对象和class文件_Class文件格式

我们知道Java是一门跨平台的语言&#xff0c;我们编写的Java代码会被编译成中间class文件以让Java虚拟机解析运行。而Java虚拟机规范仅仅描述了抽象的Java虚拟机&#xff0c;在实现具体的Java虚拟机时&#xff0c;仅指出了设计规范。Java虚拟机的实现必须体现规范中的内容&…

构建自己的简单微服务架构(开源)

构建自己的简单微服务架构&#xff08;开源&#xff09; 原文:构建自己的简单微服务架构&#xff08;开源&#xff09;前言 本篇仅作引导&#xff0c;内容较多&#xff0c;如果阅读不方便&#xff0c;可以使用电脑打开我们的文档官网进行阅读。如下图所示&#…

[转载]Spring配置文件详解一:

2019独角兽企业重金招聘Python工程师标准>>> 原文地址&#xff1a;Spring配置文件详解一&#xff1a;<context:annotation-config/>与<context:component-scan base-package"com.xx 作者&#xff1a;爱情随遇而安 <context:annotation-config/>…