2018-2019-2 网络对抗技术 20165320 Exp1 PC平台逆向破解
学到的新知识总结
- 管道:符号为
|前一个进程的输出直接作为后一个进程的输入 - 输出重定向:符号为
>将内容定向输入到文件中 - perl:一门解释性语言,不需要预编译,直接在命令行中使用。常与输出重定向">"将生成的字符串存储到文件input中。
- xxd:16进制查看命令
- objdump:反汇编
实验过程
1、修改机器指令,改变程序执行流程
首先将目标文件pwn1进行反汇编,能够看到相关的汇编代码。

其中main函数中有一条call指令,后面原本接的是foo函数的起始地址
为了能让程序在执行时直接跳到shellcode,我们需要修改调用foo函数时的机器指令,只要修改“d7ffffff”为,"getShell-80484ba"对应的补码就行。如下图所示


- 执行结果如下:

2、通过构造输入参数,造成BOF攻击
这种攻击主要是通过缓冲区的数据溢出导致原函数的返回地址被Shellcode的起始地址所覆盖。
首先我们需要对程序进行GDB调试,查看输入的字符串到第几个字节会发生溢出。(小端机器)

然后构造一个输入,将Shellcode代码的地址覆盖到相应的位置。这时需要用到perl指令。如图

执行结果如下:

3、注入Shellcode并执行
准备工作如下:
设置堆栈可执行 execstack -s 设置堆栈可执行
execstack -q 查询文件的堆栈是否可执行
关闭地址随机化
more /proc/sys/kernel/randomize_va_space 2echo "0" > /proc/sys/kernel/randomize_va_spacemore /proc/sys/kernel/randomize_va_space 0
常用的构造攻击buf的方法
retaddr+nop+shellcode (缓冲区小)
nop+shellcode+retaddr (缓冲区大)
实验首先类似上一个实验构造一个输入,然后用gdb进行调试,对foo函数进行反汇编,在ret指令处设置断点,等待程序继续运行时查看ESP中的值。(一开始按照老师的教程走了一遍,发现原来还有坑,心塞)

ESP的值+4就是Shellcode的地址,再将其写入一开始的攻击buf,执行程序就能攻击成功。

4、老师问题
- NOP:NOP指令即“空指令”。执行到NOP指令时,CPU什么也不做,仅仅当做一个指令执行过去并继续执行NOP后面的一条指令。(机器码:90)
- JNE:条件转移指令,如果不相等则跳转。(机器码:75)
- JE:条件转移指令,如果相等则跳转。(机器码:74)
- JMP:无条件转移指令。段内直接短转Jmp short(机器码:EB) 段内直接近转移Jmp near(机器码:E9) 段内间接转移 Jmp word(机器码:FF) 段间直接(远)转移Jmp far(机器码:EA)
CMP:比较指令,功能相当于减法指令,只是对操作数之间运算比较,不保存结果。cmp指令执行后,将对标志寄存器产生影响。其他相关指令通过识别这些被影响的标志寄存器位来得知比较结果。
实验感想
- 我觉得这次实验对于我来说还是挺难的吧,第三个实验的细节还有待琢磨,虽然能按照步骤达成最终的目的,但是得把过程细化,理清思路才行。堆栈的结构还有地址的存储还有待加强理解。
2018-2019-2 网络对抗技术 20165320 Exp1 PC平台逆向破解的更多相关文章
- 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 ...
- 2018-2019-2 20165317《网络对抗技术》Exp1 PC平台逆向破解
2018-2019-2 20165317<网络对抗技术>Exp1 PC平台逆向破解 实验目的 掌握NOP, JNE, JE, JMP, CMP汇编指令的机器码 NOP:无作用,英文&quo ...
- 2018-2019-2 网络对抗技术 20165336 Exp1 PC平台逆向破解
2018-2019-2 网络对抗技术 20165336 Exp1 PC平台逆向破解 1. 逆向及Bof基础实践说明 1.1 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件.该程序正常 ...
- 2018-2019-2 网络对抗技术 20165305 Exp1 PC平台逆向破解
2018-2019-2 网络对抗技术 20165305 Exp1 PC平台逆向破解 实验1-1直接修改程序机器指令,改变程序执行流程 先输入objdump -d 20165305pwn2查看反汇编代码 ...
- 2018-2019-2 《网络对抗技术》 Exp1 PC平台逆向破解 20165215
2018-2019-2 <网络对抗技术> Exp1 PC平台逆向破解 20165215 目录 知识点描述 实验步骤 (一)直接修改程序机器指令,改变程序执行流程 (二)通过构造输入参数,造 ...
- 2018-2019-2 20165316 《网络对抗技术》Exp1 PC平台逆向破解
2018-2019-2 20165316 <网络对抗技术>Exp1 PC平台逆向破解 1 逆向及Bof基础实践说明 1.1 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件 ...
- 20165214 2018-2019-2 《网络对抗技术》Exp1 PC平台逆向破解 Week3
<网络对抗技术>Exp1 PC平台逆向破解之"逆向及Bof基础实践说明" Week3 一. 实验预习 1.什么是漏洞?漏洞有什么危害? 漏洞就是在计算机硬件.软件.协议 ...
随机推荐
- java监控工具VisualVM
java监控工具VisualVM https://visualvm.github.io/ https://visualvm.github.io/documentation.html https://h ...
- Caused by: org.xml.sax.SAXParseException; lineNumber: 1
百分百是你的MYBATIS 的xml 里面的 xml节点没写对,或者忘记关闭,或者格式不对
- Android 判断是否有声音在播放
在Android中,我们可以通过AudioManager来判断是否有声音在播放. 实例1: 源码地址: PhoneWindowManager.java (frameworks\base\policy\ ...
- enumerate()用法
语法: enumerate(sequence,[start=0]) test = [i for i in range(9)] for i in test: print(i) for i,j in en ...
- SpringMvc的Url映射和传参案例
Springmvc的基本使用,包括url映射.参数映射.页面跳转.ajax和文件上传 以前学习的时候写的代码案例,今天整理笔记的时候找到了,很久没有来园子了,发上来当个在线笔记用吧,免的时间长了又忘了 ...
- 洛谷P3474 KUP-Plot purchase
简要题意: 给你一个n * n的非负矩阵,求问是否有子矩阵满足和在[k, 2k]之间.若有输出方案.n<=2000. 解: 首先n4暴力很好想(废话),然后发现可以优化成n3log2n,但是还是 ...
- 【洛谷P2746】Network of Schools
题目大意:给定一个 N 个点,M 条边的有向图,第一问求至少从多少个点出发才能遍历整个有向图,第二问求至少在这个有向图的基础上加多少条边才能使得该无向图强连通. 题解:先进行 Tarjan 缩点,得到 ...
- 【洛谷P1486】郁闷的出纳员
题目大意:维护一个平衡树,支持插入一个数,删除小于一个值的所有数,K 大值查询,每个节点权值加减一个数. 题解:所有节点权值加减操作可以考虑直接维护一个全局标记,删除小于一个值的所有数字为一个二分的过 ...
- 黑客专用操作系统——Kali Linux简介
1如果您之前使用过或者了解BackTrack系列Linux的话,那么我只需要简单的说,Kali是BackTrack的升级换代产品,从Kali开始,BackTrack将成为历史. 如果您没接触过Back ...
- Hadoop基础-完全分布式模式部署yarn日志聚集功能
Hadoop基础-完全分布式模式部署yarn日志聚集功能 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 其实我们不用配置也可以在服务器后台通过命令行的形式查看相应的日志,但为了更方 ...