gpt4 book ai didi

c - 不确定在缓冲区溢出攻击中将返回地址更改为什么

转载 作者:太空宇宙 更新时间:2023-11-04 04:37:18 25 4
gpt4 key购买 nike

我正在研究一个简单的缓冲区溢出攻击。该程序接受一个大小为 12 的数组,当它溢出时显然会覆盖堆栈上的元素,包括返回指针。在我将元素输入数组之前,堆栈看起来像这样:

0xffffcf80:    0x00000000    0x00000000    0xffffcfa8    0x00209210
0xffffcf90: 0xffffcfd8 0x00209210 0x003514e0 0x080486a4
0xffffcfa0: 0xffffcfb4 0x00350ff4 **0xffffcfd8** 0x08048543

我已将我认为是回邮地址的地址加粗。当我输入一个十六进制字符串时,例如:11 11 11 11 22 22 22 22 33 33 33 33 44 44 44 44 55 55 55 55 然后我尝试将另一个内存位置作为条目的最后一部分以指向返回地址在别处。我总是遇到非法指令错误。

我已经尝试了很多不同的内存位置,这些位置是通过在 gdb 中使用 info frames 命令获得的,但它们都返回相同的结果。我想我只是很难理解这个概念。我会喜欢任何解释或帮助,即使它与我的问题没有直接关系。提前致谢!

最佳答案

您需要用您要运行的代码的地址覆盖返回地址。

此代码可以是:

  • 二进制文件中的现有代码 - 在这种情况下,您只需查找它的地址
  • 您提供的代码(例如,通过您溢出的缓冲区中的 shellcode)- 在这种情况下,您使用该 shellcode 的地址

请注意,在所有情况下,都可以以保护机制的形式(例如 buffer overflow protectionsdata execution prevention 或...)跳过更多的环节。

关于c - 不确定在缓冲区溢出攻击中将返回地址更改为什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29645536/

25 4 0
文章推荐: c - 从表示为 char[] 的街道地址解析门牌号
文章推荐: html - 在浏览器调整大小时将元素移动到新行
文章推荐: css - 当 css Left 不在 View 中时
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com