A few days back I had an interview, and I was as开发者_高级运维ked to write a program in C which crashes the system/which shuts down the system. Needless to say I felt pretty dumb having no clue on how to even approach :(
Still I gave it a try, writing programs which use a lot of memory. But my interviewer was not satisfied with any of my techniques.
It's easy to write a program that invokes undefined or implementation-defined behavior. Some of those programs could potentially crash the system.
But by definition, this is inconsistent. And modern OSes take pains (though not 100% successfully) to prevent a rogue app from crashing the system.
There is no portable way to write a C program that crashes the system.
A fork bomb might or might not bog down a system. Of course fork
is not portable -- and a system can defend itself against such attacks by limiting the number of processes a given account can create.
Of course there's always this:
#include <stdio.h>
int main(void) {
puts("HEY YOU, PULL THE PLUG!!");
return 0;
}
I would try writing garbage to /dev/kmem
. There is a good chance that would cause an irrecoverable system crash.
Well, Have you tried following ?
void main(void) {
system("shutdown -P 0");
}
To execute this program on Linux you must log in as root
.
One way to do that is by exploiting "Privilege Escalation" vulnerabilities of the current system.
Based on current configuration, you can search for vulnerabilities that impact the system. E.g. based on Kernel version. And then escalate privileges to root.
Once the process is "root", it can shutdown the system in various ways. Sending SIGPWR to "init" process is one clean way of doing that.
精彩评论