这次缓冲区溢出是在实验楼上实现的。关于步骤的问题,就不说了,给一个实验步骤的地址。
在这次缓冲区溢出的实验中,出现了以下问题:
如何知道操作系统是32位的还是64位的?
当使用地址空间随机化来分配堆和栈的初始地址时,应该如何猜解内存地址?
Linux系统在缓冲区溢出和其它的shell攻击上进行了防范,应该如何突破这个问题?
实验步骤中给定的shellcode的原理是什么?
攻击程序中的"\90\90"的数量对程序是否有影响?有的话,有什么影响?
GDB调试时的命令都是什么作用?
GCC编译时的命令作用?
缓冲区溢出攻击的原理?
如何在远程登录不知道root密码的电脑上实现该过程?
第一个问题:
当登录到一台linux主机时,我们可以采用这些方法来查看主机是32位还是64位(此处引用其他博客的内容)。
第二个问题、第三个问题:
暂时还没学会,希望会的大牛们给与适当的指引。
第四个问题:实验步骤中的shellcode的原理?
这段shellcode代码的重点在于name数组,name数组中存储了可执行文件的路径:/bin/bash和可执行文件:/bin/bash。execve()函数的执行过程:创建一个子进程,子进程没有环境变量且在"/bin/bash"路径下,执行"/bin/bash"命令。
但是,这段代码的功能是什么?为什么这样写?希望懂得大神可以解释一下。
第五个问题:exploit.c程序中的"\90"数量有没有影响?
这个问题的答案可以在实验之后给出,答案就留给想实践的人去寻找了。
第六个问题:GDB调试命令的作用?
GDB调试命令总结。关于一些不太一样的地方,请参考用户手册。
第七个问题:GCC编译时的命令的作用?
第八个问题:缓冲区溢出的原理?
在《0day安全:软件漏洞分析技术》一书中有详细解释。之后总结。
第九个问题:如何在远程登录不知道root密码的电脑上实现该过程?
暂时不会,希望大神指点。
本文出自 “execute” 博客,请务必保留此出处http://executer.blog.51cto.com/10404661/1768933
原文地址:http://executer.blog.51cto.com/10404661/1768933