【发布时间】:2019-03-22 08:32:03
【问题描述】:
我有这个结构:
struct Books {
char title[50];
char author[50];
};
假设我知道如果我将arg1 传递给程序,在代码的某些部分中,它会在$title+52 方向添加一些字符,因此author 的值被覆盖(缓冲区溢出)。
现在我将 ASLR 添加到我的二进制文件中。这样一来,有些方向是随机的,所以我认为我之前描述的缓冲区溢出是不可能的。
这是真的吗?或者即使我添加了 ASLR 结构成员的方向是在一起的,缓冲区溢出可能是可能的?
【问题讨论】:
-
ASLR 随机化连续虚拟内存块的起始位置。您的变量仍将位于其中一个块内。缓冲区溢出问题不会通过 ASLR 神奇地消失。
-
这篇文章可能对您有所帮助:stackoverflow.com/questions/3605222/…
-
请注意,作为问题的“缓冲区溢出”与“缓冲区溢出攻击”之间存在区别。 ALSR 没有将缓冲区溢出问题作为错误来解决。它只是使在攻击中有效地使用这样的错误变得更加困难。更具体地说,它使使用这样的错误来执行诸如窃取信息或获取访问权限之类的事情变得更加困难。攻击使程序崩溃并不会变得更加困难。
-
嗨!谢谢两位,我会检查它:)
标签: c memory struct buffer-overflow aslr