【问题标题】:Stack Buffer Overflow堆栈缓冲区溢出
【发布时间】:2014-03-03 23:06:54
【问题描述】:

如何将函数的地址存储在 char* 中,以便它溢出 strcpy() 返回地址以返回到不同的函数。

如果你有一个函数:

void f()
{
     printf("We made it");
     exit(0);
}
void main()
{
    char *add;
    //Do something like: add = &f;
    char str[4] = "123";
    strcpy(str, add);
    return 0;
}

据我了解,您需要做的就是通过使 add 变大并在其中包含 f 的地址来覆盖存储在 strcpy() 调用中的返回地址。它是否正确?如何做到这一点?

【问题讨论】:

    标签: c stack buffer overflow


    【解决方案1】:

    制作一个 nop 雪橇,然后将有效载荷放在它的末尾。 https://www.corelan.be/index.php/2009/07/19/exploit-writing-tutorial-part-1-stack-based-overflows/这是一个非常详细的方法。有效载荷是用 shell 代码编写的,这有点复杂。但这将向您展示溢出的基础知识。

    如果我没记错的话,http://insecure.org/stf/smashstack.html 也是该主题的另一个教程。

    【讨论】:

      猜你喜欢
      • 2017-02-23
      • 1970-01-01
      • 1970-01-01
      • 2010-11-11
      • 2015-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多