【发布时间】:2013-03-11 03:13:39
【问题描述】:
我的问题与this one 非常相似但不一样。
我在书中运行了相同的exploit_notesearch.c 示例:Hacking, the Art of Exploitation on my 64-bit OS, Archlinux,但它不起作用。
从上面的链接我了解到它不能在大多数 64 位系统上运行。但我仍然不明白为什么程序必须这样做:ret = (unsigned int)&i - offset。为什么我不能这样做:ret = (unsigned)shellcode 以便我可以将易受攻击的程序的返回地址替换为 shellcode 的起始地址?
【问题讨论】:
-
&i - offset用于链接问题(“this one”)以获取buffer的地址(变量存储在...Wat?堆上),而不是shellcode(静态变量)。 -
但是我在gdb中发现指向的地址缓冲区比&i小得多(如果使用的内存不多,堆地址应该比堆栈地址小得多吗?)。但是示例将偏移量设置为 270,我认为它假设这两个地址很接近。
标签: security buffer-overflow exploit shellcode