2018-2019-2 20165239其米仁增《网络对抗》Exp1 PC平台逆向破解
一、实验内容
1、掌握NOP, JNE, JE, JMP, CMP汇编指令的机器码(0.5分)
2、掌握反汇编与十六进制编程器 (0.5分)
3、能正确修改机器指令改变程序执行流程(0.5分)
4、能正确构造payload进行bof攻击(0.5分)
二、实践目标
实验一:
1、本次实践的对象是一个名为pwn1的linux可执行文件,如图

2、该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串;
3、该程序同时包含另一个代码片段,getShell,会返回一个可用Shell。正常情况下这个代码是不会被运行的。
我们实践的目标就是想办法运行这个代码片段。我们将学习两种方法运行这个代码片段,然后学习如何注入运行任何Shellcode
三、实验步骤
直接修改程序机器指令,改变程序执行流程:
通过修改main函数中的call指令跳转的地址,使其本来该跳转到foo函数时,跳转到getshell函数,从而运行getshell函数。
任务一:
1、输入指令objdump -d pwn1反汇编文件 pwn1,结果如图所示:

分析结果中的main、foo、getShell函数,call 8048491 是汇编指令,将调用位于地址8048491处的foo函数;
其对应机器指令为e8 d7 ff ff ff,e8即跳转之意;
call指令调用函数对应的机器指令为:“e8”+“该函数相对于EIP值的偏移量”,让main函数调用getShell,修改“d7ffffff”为,
“getShell地址 - EIP(80484ba)”对应的补码就行(804847d - 80484ba),得到结果为c3 ff ff ff。
2、输入指令vi pwn1,文件以ASCII码的形式出现;
3、输入:%!xxd调用命令行,将文件转换为16进制,如图所示:

4、输入/d7,查找要修改的内容:

5、输入i转换为插入模式,d7修改为c3:

实验二:
1、利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数
•进行反汇编,分析程序有什么漏洞。

2,•通过分析可以知道该程序在foo函数中有读入字符串,但是只预留了一定字节数的空间,那么超出部分就会造成溢出有Buffer overflow漏洞,借助缓冲区溢出的攻击原理,我们需要的就是覆盖返回地址。那么我们需要知道输入字符串哪几个字符会覆盖返回地址。
3,•进行gdb调试,输入一段较长的数字,我这里选取的是1111111122222222333333334444444455555555,用info r命令查看此时是否缓冲区溢出,由下图可知道此时的eip寄存器所存储的值是0x35是5的ASCII 值,所以可以知道,此时该字符串中的某个5开始便缓冲区溢出了。

实验三:
Shellcode入门
Shellcode基础
【干货分享】手把手简易实现shellcode及详解
1.在对待一些有BOF漏洞的程序时,这种方法应该是最具有普适性的吧,毕竟不是所有的文件里面都会藏着一个getShell。
2.首先是一些准备工作,通过以下的操作设置堆栈可执行,关闭地址随机化。
四:实验感想
本次实验做的对象是一个名为pwn1的linux可执行文件还有利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数
等等由于自己基础薄弱再加上理解能力有限在实验中遇到了很多问题,有些问同学,有些则在网上查,但别人的时间也是有限的,所以任务三没做完。只做了一和二。下次争取全部做完。
2018-2019-2 20165239其米仁增《网络对抗》Exp1 PC平台逆向破解的更多相关文章
- 2018-2019 20165226 网络对抗 Exp1 PC平台逆向破解
2018-2019 20165226 网络对抗 Exp1 PC平台逆向破解 目录 一.逆向及Bof基础实践说明 二.直接修改程序机器指令,改变程序执行流程 三.通过构造输入参数,造成BOF攻击,改变程 ...
- 20155305《网络对抗》PC平台逆向破解(二)
20155305<网络对抗>PC平台逆向破解(二) shellcode注入 1.shellcode shellcode是一段代码,溢出后,执行这段代码能开启系统shell. 2.构造方法 ...
- 20155311《网络对抗》PC平台逆向破解(二)
20155311<网络对抗>PC平台逆向破解(二) shellcode注入 什么是shellcode? shellcode是一段代码,溢出后,执行这段代码能开启系统shell. 前期准备- ...
- 2015531 网络攻防 Exp1 PC平台逆向破解(5)M
2015531 网络攻防 Exp1 PC平台逆向破解(5)M 实践目标 本次实践的对象是linux的可执行文件 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串 ...
- 20145330 《网络对抗》PC平台逆向破解:注入shellcode 和 Return-to-libc 攻击实验
20145330 <网络对抗>PC平台逆向破解:注入shellcode 实验步骤 1.用于获取shellcode的C语言代码 2.设置环境 Bof攻击防御技术 需要手动设置环境使注入的sh ...
- 20145221《网络对抗》PC平台逆向破解
20145221<网络对抗>PC平台逆向破解 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户 ...
- 20155307《网络对抗》PC平台逆向破解(二)
20155307<网络对抗>PC平台逆向破解(二) shellcode注入 什么是shellcode? shellcode是一段代码,溢出后,执行这段代码能开启系统shell. 前期准备- ...
- 20145312 《网络对抗》PC平台逆向破解:注入shellcode和 Return-to-libc 攻击实验
20145312 <网络对抗>PC平台逆向破解:注入shellcode和 Return-to-libc 攻击实验 注入shellcode 实验步骤 1. 准备一段Shellcode 2. ...
- 20145201李子璇《网络对抗》PC平台逆向破解
20145201<网络对抗>PC平台逆向破解 准备阶段 下载安装execstack. 获取shellcode的c语言代码 设置堆栈可执行 将环境设置为:堆栈可执行.地址随机化关闭(2开启, ...
- 20145219《网络对抗》PC平台逆向破解
20145219<网络对抗>PC平台逆向破解 shellcode注入 1.shellcode shellcode是一段代码,溢出后,执行这段代码能开启系统shell. 2.构造方法 (1) ...
随机推荐
- Java基础--面向对象编程4(多态)
1.多态的概念 多态是指程序中的同一引用类型,使用不同的实例而执行结果不同的. 同一个类型:一般指父类 不同的实例:不同的子类实例 执行结果不同:针对同一方法执行的结果不同 package cn.sx ...
- Windows Server2012 R2 安装.NET Framework 3.5
拿到手的虚拟机系统是Windows server 2012R2,本想着安装SQlserver2012轻轻松松,结果途中警告未安装.NET Framework 3.5.于是找了个.NET Framewo ...
- SSH 连接慢
关闭连接时的 DNS 解析 # 编辑配置文件,修改如下配置项 vim /etc/ssh/sshd_config GSSAPIAuthentication no UseDNS no # 重启服务 sys ...
- 树莓派的系统安装,并且利用网线直连 Mac 进行配置
最近单位给了我一个新的树莓派3B+让我自己玩.下面是我记录的我如何安装 Raspbian Stretch Lite 系统,然后如何成功不用独立显示屏而利用 MacBook 对其进行配置. 安装 Ras ...
- postman接口测试笔记
1.GET 和POST 的区别: GET 使用URL 或Cookie 传参,而POST将数据放在Body 中. GET的URL 在长度上会有限制,而POST没有. POST比GET相对安全,因为在地址 ...
- 并发编程之CountDownLatch
在前面的两篇文章中我们分别用volatile.notify()和wait()分别实现了一个场景,我们再来回顾一下前面的场景:在main方法中开启两个线程,其中一个线程t1往list里循环添加元素,另一 ...
- python--再看并行之协程线程进程
1.gevent协程适合I/O密集,不适合CPU密集. 3.gevent协程无法发挥多核优势,事实上,协程只是以单线程的方式在运行. 3.子程序就是协程的一种特例 项目实际应用 from gevent ...
- Axure PR的使用
1759139 王越 Axure RP是美国Axure Software Solution公司旗舰产品,是一个专业的快速原型设计工具,让负责定义需求和规格.设计功能和界面的专家能够快速创建应用软件或W ...
- vue 中的translation操作----动态值
在vue中,也会遇见translate的情况,这里顺带也可以带上如何查找页面中的元素的案例. 1.在加载过程中,有会遇见加载顺序先后的问题,然后查找页面元素null的情况,所以在mounted的钩子函 ...
- input子系统学习笔记六 按键驱动实例分析下【转】
转自:http://blog.chinaunix.net/uid-20776117-id-3212095.html 本文接着input子系统学习笔记五 按键驱动实例分析上接续分析这个按键驱动实例! i ...