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,一经查实,立即删除!

相关文章

计算机专业考研过关率高么,考研过国家线的几率有多大?被刷的有多少?

考研每年究竟有多少人可以过国家线,可能很多同学都对很奇心,很想知道这个数据。很多人应该都知道,教育部在划定国家线时,会统计考生的总体情况,然后再分别统计13个大类学科,产生一个大致的数据的&#xff0…

复工复产三个一内容_节后复产复工,彭聪恩强调“三个一”

彭聪恩查看大良永旺购物商场监控室顺德城市网消息 (记者张琼)春节已过,元宵将至,安全生产工作时刻不可放松。为确保全区市民过上一个安全祥和的元宵节,昨日(2月21日)上午,顺德区委副书记、区长彭聪恩,副区长赖雪晖带队…

leetcode1405. 最长快乐字符串(贪心算法)

如果字符串中不含有任何 ‘aaa’,‘bbb’ 或 ‘ccc’ 这样的字符串作为子串,那么该字符串就是一个「快乐字符串」。 给你三个整数 a,b ,c,请你返回 任意一个 满足下列全部条件的字符串 s: s 是一个尽可能…

Haproxy+Keepalived实现负载均衡

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

chrome麦克风权限_如何在Chrome扩展程序中处理麦克风输入权限和语音识别

chrome麦克风权限by Palash Taneja由Palash Taneja 如何在Chrome扩展程序中处理麦克风输入权限和语音识别 (How to handle mic input permissions and speech recognition in Chrome extensions) This tutorial assumes that you have a basic understanding of Chrome extens…

云计算机房架构图,云计算架构技术与实践

云计算架构技术与实践从将云计算技术引入传统数据中心所带来的独特商业价值角度看,重点可以从开源与节流两个方面来衡量云计算的核心竞争力。1节流(Cost Saving)方面在业务系统搭建过程中,云计算和虚拟化使得企业及运营商的烟囱式软件应用可以突破应用边…

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语法,同时也需要学习如何把自己代码写的更美观,效率更高。一.…

leetcode100. 相同的树(dfs)

给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入: 1 1/ \ / \2 3 2 3[1,2,3], [1,2,3]输出: true### 代码java /*** Definiti…

k8s 分发证书文件 启动文件

接着上面的博客继续写 准备三台主机 192.168.1.71 192.168.1.72 192.168.1.73 现在k8s压缩包 我使用时1.12版本 不能下载请FQ 百度网盘提供1.12版本 https://pan.baidu.com/s/1Ty6DRaRtL-0HiTCwy5ubPA n6cy 192.168.1.71 执行 pwd -> /tmp tar -zxf kubernetes-server-lin…

如何确保您的Progressive Web App保持其Lighthouse审核分数

by Ondrej Chrastina通过Ondrej Chrastina 如何确保您的Progressive Web App保持其Lighthouse审核分数 (How to make sure your Progressive Web App keeps its Lighthouse audit score) I bet most of you have implemented a web application before. Some of you may even …

计算机字节换算在线,计算机字节换算(计算机字节换算器)

8bit(位)1Byte(字节)1024Byte(字节)1KB1024KB1MB1024MB1GB 换算率约等于1000(1024),从大到小顺序为T、GB、MB(兆Zhao)、KB、B再小就是位了。.字节(Byte 发音:/‘bait/):字节是通过网络传输信息(或在硬盘或内存中存储信息)的单位。 在ASCII码中…

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

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

leetcode1296. 划分数组为连续数字的集合(贪心算法)

给你一个整数数组 nums 和一个正整数 k,请你判断是否可以把这个数组划分成一些由 k 个连续数字组成的集合。 如果可以,请返回 True;否则,返回 False。 示例 1: 输入:nums [1,2,3,3,4,4,5,6], k 4 输出&…

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…

用python玩转数据慕课答案第四周_大学慕课用Python玩转数据章节测试答案

大学慕课用Python玩转数据章节测试答案更多相关问题渗透泵型片剂控释的基本原理是A.减小溶出B.减慢扩散C.片剂膜外渗透压大于片剂膜内,将片内药物从语义学批评是什么?As usual, _____ man was given his individual as…

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

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

aws v2.2.exe_如何使用Python 3.6在AWS EC2上创建运行uWSGI,NGINX和PostgreSQLDjango服务器...

aws v2.2.exeby Sumeet Kumar通过Sumeet Kumar 如何使用Python 3.6在AWS EC2上创建运行uWSGI,NGINX和PostgreSQLDjango服务器 (How to create a Django server running uWSGI, NGINX and PostgreSQL on AWS EC2 with Python 3.6) Getting a server up and running …

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…

jQUery中closest和parents的主要区别是

①,前者从当前元素开始匹配寻找,后者从父元素开始匹配寻找;②,前者逐级向上查找,直到发现匹配的元素后就停止了,后者一直向上查找直到根元素,然后把这些元素放进一个临时集合中,再用…