diff --git a/content/essays/tricking-with-fork-bomb.md b/content/essays/tricking-with-fork-bomb.md new file mode 100644 index 0000000..bb3c789 --- /dev/null +++ b/content/essays/tricking-with-fork-bomb.md @@ -0,0 +1,43 @@ +--- +title: "使用 fork 炸弹来进行捉弄" +date: 2022-08-05T08:31:36+08:00 +tags: [] +categories: [] +weight: 50 +show_comments: true +draft: false +--- + +⚠️**在你还未完全清楚原因时,不要尝试运行这里和文章中提到的代码**⚠️ + +> 文章来源: https://www.vidarholen.net/contents/blog/?p=766 + +今天看到了一片关于 shell 的 fork 炸弹的有意思的文章,我也被骗了,现在把它拿出来做一下分析。注意,原文的精妙之处还有很大一部分在于通过看起来朴素的陷阱来**淹死那些会游泳的**,本文在这里只聊一聊炸弹的组成原理。 + + + +在来源文章中,fork 炸弹的核心思想就是无限递归,即定义函数 r,其功能是调用两次自己,然后主动调用一次 r 来启动 fork 炸弹。如下,其中 `&` 符号的意义是后台运行,表现在 shell 中就是有新的进程产生,或称之为“异步”,这样可以使一瞬间有大量的进程产生,并且 Ctrl-C 的速度是跟不上新进程产生的速度的。 + +``` +r() ( r & r ); r +``` + +### 原文 tricking 分析 + +``` +$(echo cm0gLXJmICoK | base64 -d) +``` + +`cm0gLXJmICoK` 就是 `rm -rf *` 的 base64 编码后文本,使用 `$()` 语法来使 shell 运行这个文本。 + +``` +echo "I