linux 缓冲区溢出 - 旧的剥削艺术?

linux buffer overflow - Art of Exploitation To Old?

我正在看书 "Art of Exploitation"。

这是一本好书,但到目前为止我遇到的每一个漏洞都不适合我。在我看来,我已经严格遵守了这封信,当然没有人是完美的,所以我可能还是犯了错误。

但我看到一些评论说 linux OS 自本书编写以来已更新分配。

所以我想问问有没有人知道书中的例子是否已经过时,或者我是否应该严格遵守,或者我是否必须设计一些代码才能让它工作?

注意: 我已经读到第 60 页左右了。

我已经尝试通过编写 exploit.c 代码以及手动使用 perl 来溢出程序。

这是我一直试图溢出的代码:

int main(int argc, char *argv[])
{
char buffer[500];
strcpy(buffer, argv[1]);
return 0;
}

好吧,我还没有读过这本书,但从我的大致情况来看。

零日攻击(在最新更新的软件版本上起作用)不会持续很长时间,并且通常在软件作者出版任何此类书籍之前就无法使用(书籍作者通常会报告它们)。操作systems/compilers增加新的和新的保护,但是这些保护大多只对新编译的代码生效(这意味着旧的即使在新系统上仍然容易受到攻击)并且无论如何都可以逃避保护(更难) .

以你的例子为例。这取决于你试图用这个漏洞做什么。不过只要是基础学习,在编译的时候尽量关掉DEP、ASLR和已经提到的SSP,应该可以轻松搞定。 如果您使用的是 gcc,那么: -fno-stack-protector-z execstack -O0-g 也可能有助于找出其他问题。