外壳代码(有效载荷)是如何添加到可执行文件的?假设它是近源的。
那么黑客是如何得到它的地址的呢?当他们覆盖回信地址时他们需要这个..。
在对上述情况作出澄清后,我们希望举例说明ASLR如何帮助防止这种情况。
此问题适用于本机代码。
发布于 2019-01-13 11:44:15
我推荐阅读Aleph的为了好玩和利润而捣毁这堆东西,其中包括一些如何实现它的示例。
那么黑客是如何得到它的地址的呢?
通过使用调试器和程序的反汇编,检查程序集指令。如所引用的文章中所提到的,值得注意的特别事情之一是堆栈指针:
CPU有将值推送到堆栈并从堆栈中弹出它们的特殊指令。每次推送将值存储在堆栈指针的当前位置,并减少堆栈指针。pop检索堆栈指针所指向的值,然后增加堆栈指针(不要因向堆栈添加值而减少堆栈指针,而移除值则会增加该值这一事实而感到困惑。
如果未启用布局随机化,则堆栈指针是可预测的,这意味着黑客可以知道如何溢出缓冲区或在何处注入外壳代码。事实上,要回答问题的ASLR部分,可以在如何找到溢出错误的堆栈指针?中看到一个如何有用的示例。
外壳代码(有效载荷)是如何添加到可执行文件的?
来自不可信的输入。这方面的一个例子是通过命令行参数。它可以与其他的功用相结合。
https://security.stackexchange.com/questions/201368
复制相似问题