一个崩溃系统的C程序

时间:2011-10-03 05:46:03

标签: c

几天前我接受了一次采访,我被要求在C中编写一个程序,该程序会崩溃关闭系统的系统。毋庸置疑,我觉得自己很傻,甚至不知道如何接近:(

我还是试了一下,编写了使用大量内存的程序。但我的采访者对我的任何技术都不满意。

5 个答案:

答案 0 :(得分:9)

编写一个调用未定义或实现定义行为的程序很容易。其中一些程序可能会使系统崩溃。

但根据定义,这是不一致的。现代操作系统很难(尽管不是100%成功)防止流氓应用程序崩溃系统。

答案 1 :(得分:4)

没有可移植的方法来编写崩溃系统的C程序。

fork bomb可能会或可能不会使系统陷入困境。当然fork不可移植 - 系统可以通过限制给定帐户可以创建的进程数来防御此类攻击。

当然总有这个:

#include <stdio.h>
int main(void) {
    puts("HEY YOU, PULL THE PLUG!!");
    return 0;
}

答案 2 :(得分:2)

我会尝试将垃圾写入/dev/kmem。很有可能导致无法恢复的系统崩溃。

答案 3 :(得分:2)

嗯,你有没有尝试过?

void main(void) {
    system("shutdown -P 0");
}

要在Linux上执行此程序,您必须以root

身份登录

答案 4 :(得分:1)

这样做的一种方法是利用当前系统的“权限提升”漏洞。

根据当前配置,您可以搜索影响系统的漏洞。例如。基于内核版本。然后将权限升级为root。

一旦进程为“root”,它就可以以各种方式关闭系统。将SIGPWR发送到“init”进程是一种干净的方法。