如何找到main()的返回地址在堆栈中的位置?

时间:2013-03-08 06:17:46

标签: linux buffer-overflow exploit

我需要为类做一个远程缓冲区溢出漏洞利用程序。我理解其中的大部分内容。它涉及覆盖main的返回地址,以便我可以执行自己的代码。 但我们从未介绍过如何在内存中找到返回地址的位置...... 我一直弄错了,漏洞利用不起作用:(

我坐在gdb中,我有缓冲区的地址(0xbffff3dc)

现在,我需要找出堆栈中返回地址的位置(所以我可以找出它和我的缓冲区之间的偏移量。)

然后我会知道我需要添加多少空间:

  • 一个NOP(0x90)“雪橇”
  • 我的shellcode
  • 更多NOP ???
  • 我的缓冲区的地址(覆盖返回地址)
  • “\ r \ n”???

^我不确定标有“???”的东西是完全必要的。

1 个答案:

答案 0 :(得分:1)

您可以使用objdump

只需尝试objdump -d your-executable,它就会为您提供汇编代码和地址