---恢复内容开始---

PC平台逆向破解

实践目标

本次实践的对象是一个名为pwn1的linux可执行文件。

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

该程序同时包含另一个代码片段,getShell,会返回一个可用Shell。

目标是手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数。

基础知识

几个常见汇编指令
NOP:无操作,直接执行下一条指令
JNE:ZF等0时跳转,即不等于时跳转
JE:等于时跳转
JMP:无条件跳转
CMP:比较.(两操作数作减法,仅修改标志位,不回送结果),ZF就是标志位
linux基本操作
https://www.shiyanlou.com/courses/1 可执行文件其实就是由一系列汇编指令构成的,包括各个函数的调用其实都需要通过jum或其他跳转指令来实现,因此这次实践最直接的思路是修改main中原本该调用foo函数位置跳转的地址,把它改为getshell的地址。
直接打开可执行文件会是一堆机器码,需要先将其反汇编之后再进行之后的操作。kali系统自带反汇编,只需在终端输入“objdump -d 文件名”就可以将其反汇编。

找到main函数的位置

call是跳转,注意call那一行和foo函数的首地址会发现ba+d7 mod ff = 91,也就是foo函数的首地址,于是可以知道e8是跳转指令,d7是相对于call的下一条语句偏移地址,于是ba-7d = 3d,3d的补码应是c3,接下来只要把b7换成c3就好了。

一般文本编辑器打开文件都不会以16进制显示,所以还需要一个十六进制编程器,实践中用的是vim文本编辑器。

对vim不了解可以现在实验楼看它的教程:https://www.shiyanlou.com/courses/2。

首先命令行输入“vi 文件名”在vim中打开文件,之后按esc确认自己在普通模式下,按shift+:进入命令模式,输入”:%!xxd“将显示模式切换为十六进制显示。

查找要修改的内容”/e8 d7“,找到后前后的内容和反汇编的对比下,确认是地方是正确的,因为可能有多个地方调用。

修改d7为c3

转换16进制为原格式”:%!xxd -r“,存盘退出”:wq“,注意如果不将其转为原格式vim将以ascll码将16进制数保存,将导致无法运行。

最后程序成功跳到了getshell函数


												

PC平台逆向破解的更多相关文章

  1. 20165223《网络对抗技术》Exp1 PC平台逆向破解

    目录--PC平台逆向破解 1 逆向及BOF基础实践说明 1.1 实践内容 1.2 实践要求 1.3 基础知识 2 实验步骤 2.1 直接修改程序机器指令,改变程序执行流程 2.2 通过构造输入参数,造 ...

  2. 20155324《网络对抗》Exp1 PC平台逆向破解(5)M

    20155324<网络对抗>Exp1 PC平台逆向破解(5)M 实验目标 本次实践的对象是一个名为~pwn1~的~linux~可执行文件. 该程序正常执行流程是:~main~调用~foo~ ...

  3. 2018-2019-2 20165237《网络攻防技术》Exp1 PC平台逆向破解

    2018-2019-2 20165237<网络攻防技术>Exp1 PC平台逆向破解 一.实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调 ...

  4. 2018-2019-2 20165234 《网络对抗技术》 Exp1 PC平台逆向破解

    实验一 PC平台逆向破解 实验目的 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程序同时包含另 ...

  5. 20165221 《网络对抗技术》EXP1 PC平台逆向破解

    20165221 <网络对抗技术>EXP1 PC平台逆向破解 一.实验内容 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函 ...

  6. 2018-2019-2 网络对抗技术 20165325 Exp1 PC平台逆向破解

    2018-2019-2 网络对抗技术 20165325 Exp1 PC平台逆向破解(BOF实验) 实验有三个模块: (一)直接修改程序机器指令,改变程序执行流程: (二)通过构造输入参数,造成BOF攻 ...

  7. 2018-2019-2 20165206《网络对抗技术》Exp1 PC平台逆向破解

    - 2018-2019-2 20165206<网络对抗技术>Exp1 PC平台逆向破解 - 实验任务 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:mai ...

  8. Exp1 PC平台逆向破解 20165235 祁瑛

    Exp1 PC平台逆向破解 20165235 祁瑛 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件.该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字 ...

  9. 2018-2019-2 20165317《网络对抗技术》Exp1 PC平台逆向破解

    2018-2019-2 20165317<网络对抗技术>Exp1 PC平台逆向破解 实验目的 掌握NOP, JNE, JE, JMP, CMP汇编指令的机器码 NOP:无作用,英文&quo ...

  10. 2018-2019-2 网络对抗技术 20165336 Exp1 PC平台逆向破解

    2018-2019-2 网络对抗技术 20165336 Exp1 PC平台逆向破解 1. 逆向及Bof基础实践说明 1.1 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件.该程序正常 ...

随机推荐

  1. trait优先级 与 使用

    之前一直沒有讲到trait,在此我不得不提一下trait中的优先级: 在trait继承中,优先顺序依次是:来自当前类的成员覆盖了 trait 的方法,而 trait 则覆盖了被继承的方法. For e ...

  2. 【文章阅读】详解MySQL数据类型

    详解MySQL数据类型 - 五月的仓颉 - 博客园 http://www.cnblogs.com/xrq730/p/8446246.html 注:对于MySQL的数据类型做了详细的讲解,这是我看过的最 ...

  3. CodeForces 670C Cinema(排序,离散化)

    C. Cinema time limit per test 2 seconds memory limit per test 256 megabytes input standard input out ...

  4. python框架Scrapy中crawlSpider的使用

    一.创建Scrapy工程 #scrapy startproject 工程名 scrapy startproject demo3 二.进入工程目录,根据爬虫模板生成爬虫文件 #scrapy genspi ...

  5. Spring Boot Dubbo Dubbok spring cloud

    比较spring cloud和dubbo,各自的优缺点是什么 - 趁年轻再疯狂一次吧 - CSDN博客 https://blog.csdn.net/u010664947/article/details ...

  6. Android自定义属性:attr.xml 与 TypedArray

    1.attr.xml <?xml version="1.0" encoding="utf-8"?> <resources> <de ...

  7. oracle入门(3)——oracle服务解释

    [本文介绍] oracle不像mysql,安装后之后一个服务,如果mysql连接不上,打开其服务就行.oracle是有多个服务,哪些服务要开,哪些服务没必要开,对新手来说未必不是一个难点.下面对ora ...

  8. 添加git忽略文件

    把之前的文件添加作为忽略文件 先把本地缓存删除(改变成未track状态),然后再提交git rm -r --cached .git add .git commit -m 'commit log inf ...

  9. Tornado介绍与其Web应用结构

    1.介绍 tornado是一个Python web框架和异步网络库 起初由 FriendFeed 开发. 通过使用非阻塞网络I/O, Tornado 可以支持上万级的连接,处理 长连接, WebSoc ...

  10. pandas(六)读写文本格式的数据

    pandas提供的将表格型数据读取为DataFrame对象的函数. 函数 说明 read_csv 从文件.URL.文件型对象中加载带分隔符的数据.默认分隔符为逗号. read_table 从文件.UR ...