2017-2018-2 20179207 《网络攻防技术》第十周作业

缓冲区溢出攻防研究

Linux 缓冲区溢出

原理

缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况。这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段。这一漏洞的出现是由于数据缓冲器和返回地址的暂时关闭,溢出会引起返回地址被重写。

实践(实验楼环境下)

系统用户名shiyanlou

实验楼提供的是64位Ubuntu linux,而本次实验为了方便观察汇编语句,我们需要在32位环境下作操作,因此实验之前需要做一些准备。

1、输入命令安装一些用于编译32位C程序的东西:

sudo apt-get update

sudo apt-get install lib32z1 libc6-dev-i386

sudo apt-get install lib32readline-gplv2-dev

2、输入命令“linux32”进入32位linux环境。此时你会发现,命令行用起来没那么爽了,比如不能tab补全了,所以输入“/bin/bash”使用bash:

3、使用下面命令取消地址空间随机化

sudo sysctl -w kernel.randomize_va_space=0

4、漏洞程序是“stack.c”文件,保存到 /tmp 目录下

5、通过代码可以知道,程序会读取一个名为“badfile”的文件,并将文件内容装入“buffer”。

编译该程序,并设置SET-UID。编译时取消“/GS”保护。

sudo su

gcc -m32 -g -z execstack -fno-stack-protector -o stack stack.c

chmod u+s stack

exit

6、攻击程序是“exploit.c”文件,保存到 /tmp 目录下

7、“\x??\x??\x??\x??”处需要添上shellcode保存在内存中的地址,因为发生溢出后这个位置刚好可以覆盖返回地址。

而 strcpy(buffer+100,shellcode); 这一句又告诉我们,shellcode保存在 buffer+100 的位置。

8、gdb调试获得地址

gdb stack

disass main

根据语句 strcpy(buffer+100,shellcode); 我们计算shellcode的地址为 0xffff(十六进制)+100(十进制)=0xffff(十六进制)

现在修改exploit.c文件,将 \x??\x??\x??\x?? 修改为 \x14\xd2\xff\xff

9、先运行攻击程序exploit,再运行漏洞程序stack,观察结果

出现段错误问题时,使用gdb进行调试获得正确的返回地址

10、通过命令

sudo sysctl -w kernel.randomize_va_space=2

打开系统的地址空间随机化机制,重复用exploit程序攻击stack程序,无法攻击成功

11、将/bin/sh重新指向/bin/bash(或/bin/dash),无法攻击成功。

12、为了进一步防范缓冲区溢出攻击及其它利用shell程序的攻击,许多shell程序在被调用时自动放弃它们的特权。因此,即使你能欺骗一个Set-UID程序调用一个shell,也不能在这个shell中保持root权限,这个防护措施在/bin/bash中实现。

linux系统中,/bin/sh实际是指向/bin/bash或/bin/dash的一个符号链接。为了重现这一防护措施被实现之前的情形,我们使用另一个shell程序(zsh)代替/bin/bash。下面的指令描述了如何设置zsh程序:

sudo su

cd /bin

rm sh

ln -s zsh sh

exit

Windows缓冲区溢出

原理

缓冲区溢出(Buffer Overflow)

是目前非常普遍而且危险性非常高的漏洞,在各种操作系统和应用软件中广泛存在。

利用缓冲区溢出攻击,可以使远程主机出现程序运行错误、系统死机或者重启等异常现象,它甚至可以被黑客利用,

在没有任何系统帐户的条件下获得系统最高控制权,进而进行各种非法操作。

缓冲区溢出的原理很简单,类似于把水倒入杯子中,而杯子容量有限,如果倒入水的量超过杯子的容量,水就会溢出来。

缓冲区是一块用于存放数据的临时内存空间,它的长度事先已经被程序或者操作系统定义好。缓冲区类似于一个杯子,

写入的数据类似于倒入的水。缓冲区溢出就是将长度超过缓冲区大小的数据写入程序的缓冲区,

造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其他指令。

实践

1、新建一个C++ Source File,文件名为server,作为服务器。

2、运行程序,可以看见有server.exe应用程序,[port]是口令。

3、再新建一个C++ Source File,文件名为Client,作为客户端。

4、运行程序,可以看见有client.exe应用程序,[Server_IP]是服务器的IP地址,[port]是口令。

5、输入

ipconfig

查看本机的IP地址,即为服务器的IP地址。

6、打开桌面上的Debug文件夹,找到其中的client.exe和server.exe,将他们粘贴到“c:\windows\system32”目录下。

7、开命令提示符,找到“c:\windows\system32”目录,并运行命令“server.exe 8888”来开启server。

8、另外打开一个命令提示符,同样找到“c:\windows\system32”目录,运行命令

“client.exe 192.168.1.126 8888”来攻击server。

9、点击回车键后,可以看见一行提示“Received: TCP Server is Connected!”,

表明连接上了server。然后会弹出一个对话框,显示server.exe遇到问题需要关闭,这表明server被攻击并报错了。

原文地址:https://www.cnblogs.com/huihui0708/p/9031553.html

时间: 2024-10-12 10:53:48

2017-2018-2 20179207 《网络攻防技术》第十周作业的相关文章

2017-2018-2 20179305《网络攻防技术》第二周作业

Q1 国内外著名黑客介绍 1.国内著名黑客黄鑫简介 黄鑫,网名木马冰河,毕业于西安电子科技大学,职业是网络安全网站"安全焦点"冰河木马软件的创作者. 99年,木马虽然已经在黑客中间遍布使用,但多数为国外的BO和BUS等木马,对于一些刚接触黑客的生手来说,理解这些软件的使用方法和熟练使用这些软件无疑成为了"通往黑客道路"上的最大的难题,此外这些木马多数能够被杀毒软件擒获,使得国内的黑客多数不愿意去用木马.正当国内大多数黑客们苦苦寻觅新的国外木马时,一款中国人自己的编写

2017-2018-2 20179202《网络攻防技术》第二周作业

一.黑客信息 袁仁广,中国国家信息安全漏洞库特聘专家,北京奥运会特聘信息安全专家,现任腾讯湛泸实验室负责人.其领衔的360漏洞研究实验室被誉为"东半球最强大的白帽子军团".他在windows系统方面的造诣,在国内应该是绝对一流.(详见 黑客袁哥:关于我的几个故事) 凯文·米特尼克(Kevin Mitnick)被称为世界上"头号电脑黑客".他是第一个在美国联邦调查局"悬赏捉拿"海报上露面的黑客.他闯入了"北美空中防务指挥系统"的

网络攻防实践 第十周作业

网络攻防实践作业 html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,tabl

《网络攻防》第十周作业

缓冲区溢出 实验简介 缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况.这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段.这一漏洞的出现是由于数据缓冲器和返回地址的暂时关闭,溢出会引起返回地址被重写. 实验准备 系统用户名shiyanlou 实验楼提供的是64位Ubuntu linux,而本次实验为了方便观察汇编语句,我们需要在32位环境下作操作,因此实验之前需要做一些准备. 输入命令安装一些用于编译32位C程序的东西: sudo apt-get update

2017-2018-2 20179317 《网络攻防技术》 第四周作业

网络嗅探技术定义:(1)利用计算机网络接口截获目的地为其他计算机的数据报文(2)监听网络流中所包含的用户账户密码或私密信息等.网络嗅探器(Sniffer):(1)实现嗅探的软件或硬件设备.(2)嗅探获得数据→二进制格式数据报文.(3)解析和理解二进制数据,获取各层协议字段和应用层传输数据→网络协议分析.载波侦听/冲突检测(CSMA/CD)技术:(1)载波侦听是指在网络中的每个站点都具有同等的权利,在传输自己的数据时,首先监听信道是否空闲.如果空闲,就传输自己的数据.如果信道被占用,就等待信道空闲

2017-2018-2 《网络攻防》第五周作业

一Kali视频学习 1.bbqsql 2.HexorBase 3.Jsql 4.Oscanner 5.SIDGusser 6.Sqlsus 7.burpsuits 8.owasp zap 9.webscarab 10.fuzzing工具集 二<网络攻防>学习总结 Web安全攻防技术与实现 web应用程序体系结构及其安全威胁 web应用体系结构 浏览器 web服务器 web应用程序 数据库 传输协议http/https web应用安全威胁 针对浏览器和终端用户的web浏览安全威胁 针对传输网络的

2017-2018-2 20179209《网络攻防》第五周作业

网络攻防之Web渗透 视频学习 数据库评估软件 bbqsql bbqsql是一个Python编写的盲注工具,当检测可疑的注入漏洞时会很有用,同时bbqsql是一个半自动工具,允许客户自定参数. DBPwAudit DBPwAudit是一个数据库用户名和密码枚举工具. HexorBase 图形化的密码破解与连接工具,开源. jsql jsql是一款轻量级安全测试工具,可以探测SQL注入漏洞,它跨平台,开源免费,将存在注入漏洞的URL贴进来即可进行漏洞利用,图形化界面亲民,但使用效果有待提高. MD

2017-2018-2 20179226 《网络攻防》第7周作业

课程学习 1.windows操作系统内核实现的核心机制有: 1)Windows进程和线程管理机制 2)Windows内存管理机制 3)Windows文件管理机制(NTFS) 4)Windows注册表管理机制(注册表中的系统自启动挂接点上注册的应用软件可以随系统引导而自动运行,因此也是很多恶意代码及流氓软件普遍的攻击目标) 5)Windows的网络机制(从OSI网络参考模型的物理层到应用层,各层上对应的Windows网络组件模块) 2.Windows授权与访问控制机制 Windows的授权与访问控

2017-2018-1 20179206《网络攻防实践》第一周作业

a.你对师生关系的理解,希望是哪种关系? 我认为师生关系是一种相互平等交流的关系. 为什么这样说,因为这是由网络攻防实践这门可得特殊性来决定的,网络攻防是门实践课,需要大量的联练习和摸索,同时大部分学生对这一领域不熟悉,需要学习Linux在内的很多新东西,在中间会产生大量的新问题,这些问题需要向老师请教,如果能够尽可能的成为一种相互平等的关系,同学会更乐于去发现问题和请教问题,从而能爱上实践,爱上这门课. b.如何提问? l 提问的内容要先自我独立解决: 作为一门计算机实践课,首先放在第一位的就

2017-2018-2 20179215《网络攻防实践》第一周作业

<网络攻防开发与实践> 第一周作业 一.对师生关系的理解 ?对于研究生和导师的关系就不像中学或大学,仅仅是以传授知识为主,研究生阶段,导师起到引路的作用,给学生指点以及方向,而不仅仅是教学,传授的更应该是方法,因为此时研究生阶段学生有了自己的思想,对事物能进行更深刻的思考,想法往往更加新颖,所以导师引领方向,学生开拓创新. 二.如何提问 顺应:从对方观点中延展出你的问题,不要另起炉灶: 提升:把对方所讲的内容,归纳.升华.拔高,成为更具有概括性,更深刻的大问题,再从这个大问题出发提出你自己具体