CSAPP的缓存溢出实验
在做CSAPP的里面的缓存溢出实验。用的是华盛顿大学的软硬件接口那节课提供的虚拟机和实验。做到Level2做不出来了。Level2是要通过一个没有边界检查的Gets函数【这个函数用来输入一个字符串】修改返回地址和在栈里面写机器码改变一个全局变量global_value的值,然后再跳到bang()这个函数。
我把函数的返回地址改到了原先的栈里面,但是一运行立马报段错误,写进去的机器码没法运行没法修改global_value的值
这是getbuf函数的部分汇编代码
然后运行到这里的时候寄存器的情况是这样的
试出来会在7fffffffb810这个地址开始写入字符串。然后我写的机器码是这样的
c705082360005237b143c70504236000ea5e91046820104000c36677889900112175133ba4ee1599001122334455667770b8ffffff7f000010b8ffffff7f0000
输入48个字符之后输入8个把rbp的值覆盖掉再输入10b8ffffff7f0000把返回值改到原先的栈里面让程序去运行我写进去的机器码。但是运行的时候就出现
运行不出来。
跪求大神帮忙,实在不知道是怎么回事了。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你编译的时候,给gcc加上-fno-stack-protector命令行选项试试