标签:
邬堂坷 20122225
一、实验描述:
缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况。这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段。这一漏洞的出现是由于数据缓冲器和返回地址的暂时关闭,溢出会引起返回地址被重写。
二、实验过程:
1、实验准备:
实验前环境配置:
2、初始设置
关闭随机堆功能:
设置zsh程序:
3、编译程序:
stack.c程序:
编译stack.c程序:
得到shellcode在内存中的地址
得到新地址:
编译exploit程序
攻击结果:
取得权限:
三、实验中的问题:
在实验过程中,遇到的主要问题是,用gdb反汇编来找内存地址时,总是找不对,导致实验失败,通过反复的反汇编,出来的结果还是一样的,最后,终于发现,我用gdb反汇编出来的结果是正确的,但是在计算出出了错,strcpy(buffer+100,shellcode),加的100是十进制,而我们计算的地址是十六进制数,这里面有一个进制转换的过程,我就是在这里计算出错了。改正错误后,我发现还是不对,后面来发现,我的stack.c和exploit.c不在一个文件夹里,最后出不来结果。但是这个原理是什么我还没有搞清楚,可能跟其路径有关系吧,改正了一系列错误后,实验终于成功了。
三、实验总结:
这次实验在提示下进行,并不是很难。但是在实验楼里进行实验受网速的影响,实验很容易不成功。最好在自己的虚拟机下进行实验。在这次实验中,我学到了一个缓冲区的漏洞,并且对这个漏洞进行程序攻击,这个实验的核心知识是对栈的理解,同时,要对linux系统要有充分的学习,对环境熟悉才能做好实验。
标签:
原文地址:http://www.cnblogs.com/wutangke/p/4445405.html