简单说下其原理:通过往程序的缓冲区写环氧乙烷灭菌超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,进而运行精心人死了会怎么样准备的指令,以达到攻击的目的。
如上图,程序的缓冲区比作一个个格子(内存单元),每个格子中存放不同的东西,有的是命令诗翁彼豆故事集,有的是数据,当程序需要接收用户数据,程序预先为之分配了4个格子(上图中黄色的0~3号格子)。
按照程序设计,就是要求用户输入的数据不超过4风雨哈佛路电影个。
而用户在输入数据时,假设输入了16个数据,而且程序也没有对玉娆用户输入数据的多少进行检查(这种情况太常见了,windows系统本身就出过n个缓冲区溢出漏洞),就往预先分配的格子中存放,这样不仅4个分配的格子(内存)被使用了,其后相邻的12个格子中的内容都被新数据覆盖。
一般情况下后面的格子是可以被当成代码执行的,嘿嘿,那么好玩的事情来了,我们可以精心制造一段指令,比如格式化硬盘指令来让cpu执行。
接下来通过一个实例来演示如何利用缓冲区溢出漏洞来攻击目标主机
• 漏洞测试环境介绍操作系统:winxp(被攻击方,在虚拟机里), win7(攻击方)漏洞挖视频制作软件哪个好掘软件:FTPFuzz,这货可以构建任意数据结合ftp命令发送给服务器,查找溢出漏洞用的漏洞测试目标软件:GoodFTP Server ,这是一个架设FTP服务器的软件辅助软件:OllyICE ,用来跟踪程序的运行过程,居家旅行杀人灭口破解程序必备 - -
首先,用OllyIce打开GoodFTP,因为程序接受到ftp命令是一串文本,所以会用到一个名为strstr的api函数,所谓api函记叙文的要素数就是操作系统课上讲的系统调用了。2. 然后ed2k给strstr下个断点,让程序运行到这里的时候暂停下来,以便防紫外线布料观察情况。如下图,左起第自己装修一列是内存地址(虚地址),第二第三列是机器码与对应的汇黑色空间编代码,最后一列就是寄存器里的内容了
3. youtube请出刚才提到的漏洞挖掘软件——FTPFuzz,设置一下让它不断向目标主机的21号端口发送AAAAAAAAAAAA……
4. 回到OllyIce中,因为程序收到数据后会将之当成文本处理,这时系统会用到刚才提到的str运动香水str函数了,于是就暂停下来,因为之前下了一个断点(黄色的地方)。
5. 我们观察天雷无妄一下寄存器部分,比如ECX寄存器所指向的内存单元里有一大堆的A,说明已经收到了数据正准备处理呢。
6.继续执行下去,终于提示出错计算机二级office了,说内存地址仿真阴茎4141414141不可读,嘿嘿,cpu把我们发送的数据AAAAA…….当成指令来执行了。
发挥g线上的魔王下想象力,如果那个内存区域不是一大堆的41,而是我们精心准备好的指令呢?
7.下面是我们的攻击代码,其作用是向目标主机发送我们精心准备的数据,也就是shellcode变量部分,介时目标主机将执行这部分指令。
上面是一段python代码,变量shellcode的内容是一段x86指令集的机器码,三毛与荷西这些机器码的作用是弹出一个对话框。
然后执行刚才的该py怎么做人thone脚本,可以看到执行成功的提示了,这时我们回到虚拟机看看GoodFtp怎样了
注意箭头所指,溢出攻击成功!目标系统成功执行我们发送的指令了。
小结:现在的操作系统一般都会有相应的措施来对搞缓冲区溢出漏洞。比如栈随机化、栈检测等。此外,合理地给各种应用分配权限也是一种办法。
版权声明蒋纬国:本文为极光社区博主「xdx54321 」的原创文章,遵循 CC 4.0 BY-SA 版权协议。
原文链接:缓冲区溢出原理-极光社区
本文发布于:2023-06-04 06:12:42,感谢您对本站的认可!
本文链接:http://www.ranqi119.com/ge/85/213875.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |