关于缓冲区溢出的问题,我想知道函数调用过程压入栈中的函数返回地址为什么会有可能因为缓?E

来源:百度知道 编辑:UC知道 时间:2024/06/25 06:40:43
我觉得缓冲区溢出会将其他数据覆盖,我不理解为什么可以利用缓冲区溢出改写函数的返回地址呢,
希望给个还算详细的解答好吗,谢谢

函数调用需要保护EIP和EBP
这两个寄存器很重要,溢出攻击中很重要的一点就是定位溢出点进行覆盖跳转的,否则就只能使目标程序崩溃而已,至于控制是要交给shellcode完成的

最后就楼主的问题讲下,首先函数调用完毕后要恢复EBP和EIP的,我们知道EIP中保存着下一条即将执行的机器指令的地址,如果我们定位EIP后定位覆盖(用我们溢出的数据)/*计算机是不能区分数据和指令的,我们忽悠下*/,改成JMP ESP或者其他的跳转方式跳转到我们的shellcode,而shellcode中保存着我们精心设计的机器码,那么籍此可以获得计算机的部分或全部控制权

这只是思路,具体操作还是很要求技术的,可以参看XFOCUS的牛著网络渗透技术,也可以看shellcode界的九阴真经shellcoder's handbook.....

(~ o ~)~zZ偶语文不好,可能表达的不好,楼主可以参看以上的参考书,里面讲的不错