20154305 齐帅 PC平台逆向破解
Exp1 PC平台逆向破解
一、实践目标
本次实践的对象是一个名为pwn1的linux可执行文件。
该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串。
该程序同时包含另一个代码片段,getShell,会返回一个可用Shell。正常情况下这个代码是不会被运行的。我们实践的目标就是想办法运行这个代码片段。
二、实验要求
报告内容
- 掌握NOP, JNE, JE, JMP, CMP汇编指令的机器码(0.5分)
- 掌握反汇编与十六进制编程器 (0.5分)
- 能正确修改机器指令改变程序执行流程(0.5分)
- 能正确构造payload进行bof攻击(0.5分)
报告整体观感
报告格式范围,版面整洁 加0.5。
报告排版混乱,加0分。
文字表述
报告文字内容非常全面,表述清晰准确 加1分。
报告逻辑清楚,比较简要地介绍了自己的操作目标与过程 加0.5分。
报告逻辑混乱表述不清或文字有明显抄袭可能 加0分。
三、实验方法
- 手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数。
四、实验步骤
(一)反汇编查看pwn1的内容并计算修改地址的值
1. 输入反汇编指令 objdump -d 20154305|more查看可执行文件内容,其中20154305为pwn1的一个副本

2. 向下翻页找到getshell函数、foo函数和main函数

由图中可见“ call 8048491 "这条指令将调用位于地址8048491处的foo函数,其对应机器指令为“e8 d7ffffff”,e8即跳转之意。本来正常流程,此时此刻EIP的值应该是下条指令的地址,即80484ba,但如一解释e8这条指令,CPU就会转而执行 “EIP + d7ffffff”这个位置的指令。“d7ffffff”是补码,表示-41,41 = 0x29 ,80484ba + d7ffffff = 80484ba - 0x29 正好是8048491这个值。
main函数调用foo,对应机器指令为“ e8 d7ffffff ”,那我们想让它调用getShell,只要修改 d7ffffff 为 getShell-80484ba 对应的补码就行。用Windows计算器,直接 47d-4ba就能得到补码,是c3ffffff。

(二)修改可执行文件
1. 用vim编辑器打开20154305可执行文件,输入 vim 20154305
2. 在 vim 编辑器中按 Esc 键,输入" :%!xxd "将原格式转换成十六进制显示,结果如下图:

3. 查找要修改的内容,输入“ /e8 d7 "。

此处可通过记录改行机器语言前边的编号000004b0标识位置。
4. 修改d7为c3

具体操作是将光标移动到要修改的位置,然后按下键盘上的 r 键,然后按下修改的目标值。
5. 转换十六进制为原格式,输入 “ :%!xxd -r ” 。

6. 保存、退出 vim 编辑器
输入 “ :wq ”

(三)反汇编检查修改后的结果

修改指令成功,本次试验成功完成。
(五)实验总结
首先,由于条件有限,我实验的PC未能安装32位运行器,不能运行该可执行文件,但是已将修改后的文件在其他同学电脑上运行过了,可以执行且达到目的。
其次,本次实验内容虽然以前从未接触过,但是同样也给我带来了兴趣,使我能够深入地去学习研究,并且可参考的报告、案例比较多,理解相对比较深刻,但是对于该实验的其他攻击方法暂时没有头绪,会在以后的课上继续深入研究。
20154305 齐帅 PC平台逆向破解的更多相关文章
- 20165223《网络对抗技术》Exp1 PC平台逆向破解
目录--PC平台逆向破解 1 逆向及BOF基础实践说明 1.1 实践内容 1.2 实践要求 1.3 基础知识 2 实验步骤 2.1 直接修改程序机器指令,改变程序执行流程 2.2 通过构造输入参数,造 ...
- 20155324《网络对抗》Exp1 PC平台逆向破解(5)M
20155324<网络对抗>Exp1 PC平台逆向破解(5)M 实验目标 本次实践的对象是一个名为~pwn1~的~linux~可执行文件. 该程序正常执行流程是:~main~调用~foo~ ...
- 2018-2019-2 20165237《网络攻防技术》Exp1 PC平台逆向破解
2018-2019-2 20165237<网络攻防技术>Exp1 PC平台逆向破解 一.实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调 ...
- 2018-2019-2 20165234 《网络对抗技术》 Exp1 PC平台逆向破解
实验一 PC平台逆向破解 实验目的 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程序同时包含另 ...
- 20165221 《网络对抗技术》EXP1 PC平台逆向破解
20165221 <网络对抗技术>EXP1 PC平台逆向破解 一.实验内容 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函 ...
- 2018-2019-2 网络对抗技术 20165325 Exp1 PC平台逆向破解
2018-2019-2 网络对抗技术 20165325 Exp1 PC平台逆向破解(BOF实验) 实验有三个模块: (一)直接修改程序机器指令,改变程序执行流程: (二)通过构造输入参数,造成BOF攻 ...
- 2018-2019-2 20165206《网络对抗技术》Exp1 PC平台逆向破解
- 2018-2019-2 20165206<网络对抗技术>Exp1 PC平台逆向破解 - 实验任务 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:mai ...
- Exp1 PC平台逆向破解 20165235 祁瑛
Exp1 PC平台逆向破解 20165235 祁瑛 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件.该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字 ...
- 2018-2019-2 20165317《网络对抗技术》Exp1 PC平台逆向破解
2018-2019-2 20165317<网络对抗技术>Exp1 PC平台逆向破解 实验目的 掌握NOP, JNE, JE, JMP, CMP汇编指令的机器码 NOP:无作用,英文&quo ...
随机推荐
- vi 使用小结
复制 1,ny 从哪行到哪行的复制,中间用逗号隔开,然后命令y. 黏贴 是在命令模式下直接按p即可 跳到n行: 命令模式直接输入数字即可 剪切:d命令 删除:x命令 跳到行首行尾:直接home或end ...
- 移动端使用mint-ui loadmore实现下拉刷新上拉显示更多
前序:在使用vue做一个h5项目的时候,需要上拉分页加载,实践中总结一下: 首先要安装mint-ui npm i mint-ui -S 然后引入,一般在main.js里面 import Vue fro ...
- 【亲测】502 Bad Gateway 怎么解决?
502 Bad Gateway 怎么解决? 1.什么是502 badgateway 报错 简单来说 502 是报错类型代码,bad gateway 错误的网关. 2.产生错误的原因 连接超时 具体原因 ...
- 最强Hibernate搭建文章(转)
Hibernate优势: 1.Hibernate对JDBC访问数据库的代码做了轻量级的封装,大大简化了数据访问的层的重复性代码,并却减少了内存消耗,加快了运行效率. 2.Hibernate是一个基于J ...
- MATLAB——矩阵排序详解
<span style="font-size:18px;">(1)B=sort(A) 对一维或二维数组进行升序排序,并返回排序后的数组,当A为二维时,对数组每一列进行排 ...
- leetcode101
/** * Definition for a binary tree node. * public class TreeNode { * public int val; * public TreeNo ...
- synchronized 和reentrantlock的优缺点
reentrantlock的优点 可以添加多个检控条件, 如果使用synchronized,则只能使用一个. 使用 reentrant locks 可以有多个wait()/notify() 队列. [ ...
- 2017-11-04 Sa OCT codecombat
def hasEnemy(): e = hero.findNearestEnemy() if e: return True else: return False def enemyTooClose() ...
- Ubuntu下解决MySQL自启动,chkconfig list 全部off 情况
chkconfig命令是用于RedHat/Fedora发行版的,而对于像Ubuntu之类的Debian发行版,应该使用这个命令: sudo update-rc.d mysql defaults 验证一 ...
- 使用pandas进行数据预处理01
数据预处理有四种技术:数据合并,数据清洗,数据标准化,以及数据转换. 数据合并技术:(1)横向或纵向堆叠合数据 (2)主键合并数据 (3)重叠合并数据 1.堆叠合并数据: 堆叠就是简单的把两个表拼接在 ...