写作

Atom feed icon 软件,技术,系统管理员战争故事,等等。 2025年3月26日,星期三

Heap 堆的问题

好的,首先,大家都冷静一下。 每个人都慌了。 这不是解决问题的方式。

好的,那么,让我尝试一个不太恰当的比喻。 有一个日托中心,很多人把孩子送到那里。 然后有一天,有人发现他们用最锋利的材料建造了游乐场。 这不是说游乐场是 70 年代的产物,而是相对较新的。

我所做的是说“也许你不想把你的孩子送到那里”。

现在,这是一个糟糕的比喻,因为我没有详细说明。 在这种情况下,我宁愿世界有机会在它可能造成的所有后果被知晓之前关闭它。 这种事情的本质意味着这是一场竞赛,出于某种原因,我站在保护机器的一边,所以我要求人们停止运行它。

现在,首先,我不知道如何利用这种东西。 我在 90 年代经历过这种溢出问题开始出现的时候,而且我很确定,如果你能做到这一点,你就能做到更糟糕的事情。

这就是我所说的:

终端 1:

user1$ random-tool

终端 2:

user2$ atop
malloc(): corrupted top size
Aborted

...这很糟糕,对吧?

所以你稍微调整一下工具,然后再次运行...

user2$ atop
Segmentation fault

这也不是很好!

或者...怎么样...

user2$ atop
Fatal glibc error: malloc assertion failure in sysmalloc: (old_top == initial_top (av) && old_size == 0) || ((unsigned long) (old_size) >= MINSIZE && prev_inuse (old_top) && ((unsigned long) old_end & (pagesize - 1)) == 0)

再说一次,这不是我的领域。 我从来没有写过 Heap 堆溢出利用程序,但简单地阅读了一下,让我想知道这些东西有利用的价值。

user1 做了一些事情... 并导致 user2 崩溃。 如果你可以让它做一些有用的事情,那么你就可以让 user2 代表你运行程序。

如果 user2 是 root 用户怎么办? 那么你就控制了这台机器。

明白了吗? 所以也许停止以 root 用户身份运行它,而且也直接停止运行它。

更多写作 | 联系方式/发送反馈