gpt4 book ai didi

无法利用简单程序中的溢出(shellcoder 手册第 2 章)

转载 作者:行者123 更新时间:2023-11-30 20:31:40 24 4
gpt4 key购买 nike

我正在阅读《shellcoder 手册》,目前正在阅读第 2 章,其中我有一个简单的程序可以通过溢出预期输入来利用,然后为 ret 指令发出一个新位置,以便函数 return_input 可以执行两次!

这是用 C 编写的简单程序

void return_input (void)
{
char array[30];
gets (array);
printf(“%s\n”, array);
}
main()
{
return_input();
return 0;
}

这是main函数的反汇编版本,我们可以看到调用函数的跳转地址。

Dissas

我使用以下命令并输入溢出的字符,其后面的地址应替换 ret 的内容

printf

但是正如你所看到的,我没有运行 return_input 函数两次,而是只打印出一个问号并表示分段失败

最佳答案

  1. gets 读取终止字节并将其替换为 NULL 字节,因此您想要的 ret 被该 NULL 字节破坏。
  2. 您在反汇编代码中看到的偏移量不是真实地址,您在编译程序时设置了PIE标志,因此真实地址可能看起来像0x55555? ???58a,这就是为什么 gdb 不允许您插入断点,因为您可能会尝试执行 b *0x58a 或其他操作。使用 -no-pie 进行编译会让事情变得更轻松。

关于无法利用简单程序中的溢出(shellcoder 手册第 2 章),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49983236/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com