CSAPP的缓存溢出实验

发布于 2022-09-02 09:25:30 字数 973 浏览 29 评论 0

在做CSAPP的里面的缓存溢出实验。用的是华盛顿大学的软硬件接口那节课提供的虚拟机和实验。做到Level2做不出来了。Level2是要通过一个没有边界检查的Gets函数【这个函数用来输入一个字符串】修改返回地址和在栈里面写机器码改变一个全局变量global_value的值,然后再跳到bang()这个函数。
我把函数的返回地址改到了原先的栈里面,但是一运行立马报段错误,写进去的机器码没法运行没法修改global_value的值
这是getbuf函数的部分汇编代码
clipboard.png
然后运行到这里的时候寄存器的情况是这样的

clipboard.png
试出来会在7fffffffb810这个地址开始写入字符串。然后我写的机器码是这样的
c705082360005237b143c70504236000ea5e91046820104000c36677889900112175133ba4ee1599001122334455667770b8ffffff7f000010b8ffffff7f0000
输入48个字符之后输入8个把rbp的值覆盖掉再输入10b8ffffff7f0000把返回值改到原先的栈里面让程序去运行我写进去的机器码。但是运行的时候就出现
clipboard.png
运行不出来。

跪求大神帮忙,实在不知道是怎么回事了。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

随波逐流 2022-09-09 09:25:30

你编译的时候,给gcc加上-fno-stack-protector命令行选项试试

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文