fork bomb 介绍

fork-bomb:多种语言的叉子炸弹 叉子炸弹 许多不同语言的叉子炸弹。 请分叉(ba dum崩溃)并贡献力量。 当前语言: 艾达 集会 AWK 重击 批 脑干 C C ++ C# Linux下的C#(.Net Core) 埃尔朗 财务会计准则 去 哈斯克尔 HTML Java JavaScript Lisp a 微软Access PHP Perl Python [R Ruby 锈 方案 壳 Visual Basic 立即下载

下面就是一个最简单的 bash fork 炸弹:

: () { : | : & } ; :

上面几个符号看上去很复杂,其实如果写成下面这个样子就好懂了,: 是函数名,执行一个调用自己的递归并且 pipe 到自己,& 表示后台执行程序,最后的一个 : 是在函数外调用和执行 : () 这个函数的意思:

: () {
    : | : &
}; :


上面几个符号看上去很复杂,其实如果写成下面这个样子就好懂了,: 是函数名,执行一个调用自己的递归并且 pipe 到自己,& 表示后台执行程序,最后的一个 : 是在函数外调用和执行 : () 这个函数的意思:

: () {
    : | : &
}; :

如何避免 fork 炸弹呢?方法很简单,只要限制每个用户可以调用的进程数就可以避免,这个可以通过修改 vi /etc/security/limits.conf 文件来设定:

# vi /etc/security/limits.conf

vpsee           hard    nproc           32
@student        hard    nproc           32
@faculty        hard    nproc           64

上面的配置文件意思是说限制 vpsee 这个用户只能 fork 32 个进程;然后限制 student 这个用户组的每个成员最多能 fork 32 个进程;限制 faculty 这个用户组的每个成员最多能 fork 64 个进程。不过要事先检查系统是否有 pam_limits.so 这个模块以及是否已经加载:

# ls /lib64/security/pam_limits.so
/lib64/security/pam_limits.so

# vi /etc/pam.d/login
session    required     pam_loginuid.so

如果自己是 Linux 普通用户,不是 root 用户不能修改 limits.conf 和重启系统的话,可以用 ulimit 来临时限制自己允许创建的进程数,ulimit 有 Hard 和 Soft 两种方法限制,用 Hard 的话可以减少最大可用的进程数,但是就不能重新增大这个限制了;用 Soft 的话可以自己自由增大和减小限制(ulimit,-H 和 -S 的详细说明可以参看 man ulimit)。不同的 Linux 版本对这个 ulimit -u 的默认值不同,在 CentOS 上默认情况下最大运行进程数是 8256,在 Fedora 上是 1024,所以这个要看不同的发行版本,不过这个无所谓,反正可以改,不过改成32后就不能再改成比32更大的了(比如64),只能再改成比32小的,ulimit 不带 -H 和 -S 参数的时候同时设置 Hard 和 Soft:

$ ulimit -u
8256
$ ulimit -u 32
$ ulimit -u 64
-bash: ulimit: max user processes: cannot modify limit: Operation not permitted

$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 8256
max locked memory       (kbytes, -l) 32
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 32
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited


还是晕晕的?再换一下就更好理解了。

a()
{
a|a&
};
a

简化一下,先定义一个函数a,再运行a。a函数里面递归调用自身a,并且利用管道fork一个子bash进程在后台运行a。

于是,运行a的后果是当前的bash陷入a的死循环,不断的fork,而且fork出来的子进程又都做同样的事,这样要不了一会儿,栈空间挂了,进程列表也会挂,系统就要崩溃了。

:(){ :|:& };:这个我刚开始也让我困惑,不知道bash里:可以用做函数名。还有:在bash里是builtin,具体可以info :看到其作用。

有必要了解bash解释命令的顺序

  1. Aliases
  2. Keywords such asfunctionand several others, likeifandfor
  3. Functions
  4. Built-ins likecdandtype
  5. Scripts and executable programs, for which the shell searches in the directories listed in thePATH

environment variable bash中函数优先内置命令,于是:被当作函数解释了。


GPU算力租用平台推荐 阿里云作为中国领先的云计算服务提供商,提供了丰富的GPU云服务器实例,包括NVIDIA Tesla V100、A100等多种高性能GPU型号。阿里云GPU云服务器适用于深度学习、科学计算、图形渲染等多种场景,能够满足不同用户的计算需求。 阅读详情

相关推荐

从零构建Carsim线控转向仿真:模型搭建、算法集成与整车联动实战

本文详细介绍了从零开始基于Carsim和Simulink搭建线控转向仿真模型的完整实战流程。内容涵盖RWA前轮执行器动力学建模与PID控制、卡尔曼滤波器估算齿条力、HWA方向盘手感模拟算法设计,以及最终实现HWA与RWA闭环联动并进行整车仿真调试。通过分步拆解,帮助读者深入理解线控转向系统的核心原理与工程实现。

weixin_29158413的博客 251

fork bomb

Jaromil在2002年设计了最为精简的一个Linux Fork炸弹,整个代码只有13个字符,在shell中运行后几秒后系统就会宕机: :{ :| : & }; :等价:{ :|:& }; :等价function bomb{ bomb|bomb & }; bomb因为shell中函数可以省略function关键字,所以上面的十三个字符是功能是定义一个函数与调用这个函数

you 883

【阿里云大模型高级工程师ACP习题集】2.4 自动化评测答疑机器人的表现(⭐️⭐️⭐️ 重点章节!!!)

【摘要】这是我精心整理出对应的习题集,里面足足有 30 道题目,从基础概念到深度拓展,全方位覆盖章节重点、难点。不管你是想检验自己的学习成果,还是想针对薄弱环节进行强化训练,它都能完美适配!

davidkorhenn的博客 2481

(linux)从进程和管道解析炸弹函数(5个字符如何让你的windows3秒钟崩溃)

1 进程 1.1进程介绍 进程是程序执行时的一个实例,从内核来看,进程就是分配系统资源(CPU时间,内存等)的基本单位,进程的优点:进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它的进程产生影响。进程的缺点:就是在进程切换时,耗费的资源大,相对于线程来说,线程速度是进程速度的几十倍,因为一个进程可以由多个线程组成,线程与同属于一个进程的其它线程共享进程全部资源,但线程没有独立的地址...

qq_38432430的博客 888

Windows平台高效BLE调试工具开发指南

本文为开发者提供了一份在Windows平台上开发高效BLE调试工具的详细指南。文章深入探讨了使用32feet.NET库进行蓝牙低功耗设备扫描、连接、数据通信及进阶功能开发的实战经验,旨在帮助开发者打造功能自定义、性能优化的专属调试利器,显著提升物联网和嵌入式设备的调试效率。

weixin_29201933的博客 259

微纳加工技术中的自对准硅化物(Silicide)工艺:关键步骤与应用场景解析

本文深入解析了微纳加工技术中的自对准硅化物(Silicide)工艺,详细介绍了其关键步骤与应用场景。从表面清洁、金属沉积到两步退火法,全面拆解工艺全流程,并探讨了不同技术节点下的工艺演进。文章还提供了实际应用中的问题排查方法和新兴技术对Silicide工艺的挑战,为芯片制造领域的工程师提供了实用参考。

weixin_30613727的博客 431

TensorFlow正则化终极指南:如何有效防止过拟合的10个技巧

TensorFlow正则化是机器学习中防止模型过拟合的关键技术,通过TensorFlow-Course项目可以学习到完整的正则化实现方法。本文将为您详细介绍TensorFlow中10个有效的正则化技巧,帮助您构建更加稳健的深度学习模型。😊 ## 什么是过拟合?为什么需要正则化? 在深度学习训练过程中,模型可能会过度拟合训练数据,导致在测试集上表现不佳。过拟合就像学生只会背答案而不会解题一样,

gitblog_00023的博客 756

AD9361快速锁定实战:Profile寄存器配置与频率调谐算法解析

本文深入解析了AD9361射频收发器的快速锁定(Fast Lock)功能,重点阐述了其核心机制——Profile寄存器配置。通过剖析16字节Profile结构,详细讲解了频率调谐算法,包括LO_DIV、LO_INT、LO_FRAC等关键参数的计算,以及如何通过查表获取优化的环路滤波器参数。文章提供了完整的Python算法示例和FPGA实现要点,旨在帮助工程师实现毫秒级甚至微秒级的频率切换,满足跳频通信等高性能应用需求。

weixin_29196315的博客 230

linux bash Shell脚本经典之Fork炸弹解析:() { :|:& };:

众所周知,bash是一款极其强大的shell,提供了强大的交互与编程功能。这样的一款shell中自然不会缺少“函数”这个元素来帮助程序进行模块化的高效开发与管理。于是产生了由于其特殊的特性,bash拥有了fork炸弹。Jaromil在2002年设计了最为精简的一个fork炸弹的实现。所谓fork炸弹是一种恶意程序,它的内部是一个不断在fork进程的无限循环,fork炸弹并不需要有特

ppby2002的专栏 1万+

Icarus Verilog和GTKwave使用简析

本简要介绍Icarus Verilog和GTKwave的使用,使用iverilog(Icarus Verilog)编译仿真verilog而使用GTKWave查看仿真数据波形下载安装 基本使用 iverilog使用 GTKWave使用 iverilog常用选项 使用库 注意

husipeng86的专栏 1万+

boost::circular_buffer缓行缓冲区

1、circular_buffer实现了一个环形缓冲区,空间大小是固定的,当到达容器末尾时,将自动利用容器另一端的位置空间。 2、当程序需要容纳大量的元素,但多数情况下仅保存较少数量元素时可以使用circular_buffer_space_optimized,他可以有效的减少内存的占用,提高程序的运行效率。 3、主要接口: 4、实现一个生产者---消费者模式示例: #inc...

小米的修行之路 792

fork bomb 介绍 以及防范措施

文章来自 http://blog.youkuaiyun.com/gray13/article/details/7308771#comments 下面就是一个最简单的 bash fork ×××: : () { : | : & } ; : 上面几个符号看上去很复杂,其实如果写成下面这个样子就好懂了,: 是函数名,执行一个调用自己的递归并且 pipe 到自己,&...

weixin_33957648的博客 199

OpenClaw + Antigravity + 飞书完整部署教程

在 Linux 服务器上部署 OpenClaw,使用 Antigravity 本地代理 AI 模型,并接入飞书实现 24 小时在线 AI 助手。

Maynor的博客 1788

Linux Fork Bomb

fork bomb

建伟博客 1398

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Linux fork炸弹解析 ——Linux Fork Bomb

Linux Fork Bomb:(){ :|: & };:是一个bash函数,以Fork Bomb闻名,是一个拒绝服务攻击 的Linux 系统。如果你好奇地去执行了这个命令,那么赶快重启系统吧~!命令解析:() { : | : & };: :在这里是一个函数名,我们定义之,并在后面执行它。 :|:&,:函数的输出通过管道传给另一个冒号函数作为输入,并且在后台执行。 { };标识着里面的内容是

AnSwEr不是答案 8536

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

终极指南:20分钟掌握跨语言Fork Bomb代码实现

**Fork Bomb**(进程炸弹)是一种通过无限递归创建进程来耗尽系统资源的攻击代码。这个开源项目收集了30多种编程语言的fork bomb实现,从经典的Bash脚本到现代的Rust代码,为安全研究者和开发者提供了一个完整的学习资源库。无论你是想了解系统安全原理,还是想学习不同编程语言的进程控制技术,这个项目都是不可多得的实用工具。 ## 🚨 什么是Fork Bomb? Fork Bom

gitblog_00107的博客 1161

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

递归应用:让系统卡住 fork×××

bash shell:{:|:}:其中函数名“:”只是简化的一例,实际实现时可以随意设定,一个较易理解(将函数名替换为“forkbomb”)的版本如下:forkbomb(){ forkbomb|forkbomb &} ; forkbomb注:| 的作用:管道,前者的输出作为后者的输入,此处若不加|呢? 用sleep 1; 做下缓冲(不让系统卡的太快) 原理:...

weixin_33929309的博客 193

一个贼强的命令

:(){ :|:&};:在bash下 如此输入一发fork bomb 无限fork这是bash下的递归函数,每次调用都会创建两个子进程,而子进程又各自创建2个,如此反复下去,就可以在一秒以内,创建无数的进程出来。然后,实测瘫痪防范措施,用ulimit来防范,限制用户开线程的数量

yangrui0070的博客 526

bomb炸弹详解

bomb炸弹:是一种恶意程序,它的内部是一个不断在 fork 进程的无限循环,实质是一个简单的递归程序,调用递归函数实现。由于程序是递归的,如果没有任何限制,这会导致这个简单的程序迅速耗尽系统里面的所有资源。 函数实现: :(){ :|:& };: bomb() { bomb | bomb & }; bomb ...

一直在努力学习的菜鸟 1481

[OS_5] 程序和进程 | fork | execve | 浅谈win的api

execve 的核心功能是替换进程代码 子进程通过 fork + setsid 脱离原会话,成为守护进程

No Game No Life 1069

浅显理解*nix下的守护进程机制及fork函数

最近空闲时间重新仔细看了一下memcached的使用说明文档,硬着头皮看了一点源码,有时候看到一些晦涩的c函数感觉实在恍惚只能跳过。不过也不算是全无收获,终于LZ还敢再看c语言,终于LZ又看起了c语言,终于近期的睡眠质量明显好了很多。扯淡到此结束,下面记录一下自己的学习心得。 一、Unix Daemon Process memcached的守护进程机制使用经典的Unix daemon模式(da...

weixin_30622107的博客 128

python queue get 方法,Python 3-多重处理-Queue.get()不响应

I want to make a brute force attack and therefore need some speed... So I came up to use the multiprocessing library... However, in every tutorial I've found, something did not work.... Hm.. This one ...

weixin_31062533的博客 352

树莓派配置watchdog

0x00 安装watchdog apt install watchdog 编辑/etc/modules,添加bcm2708_wdog 编辑/etc/watchdog.conf watchdog-device = /dev/watchdog # 最大进程数 max-load-1 = 24 # 高温复位(80度) temperature-device = /sys/class/thermal/ther...

weixin_30437481的博客 172

shell forkbomb

CAUTION:DoNOTrunthiscommandwithoutunderstandingthehavocitcancreate.ThisisperhapsmyfavoriteBashone-linerofalltime::(){:|:&};:Let'sfirstgoaheadandp...

weixin_33984032的博客 183

max number of threads [1024] for user [lish] likely too low, increase to at least [2048]

# cat /etc/security/limits.d/90-nproc.conf # Default limit for number of user's processes to prevent # accidental fork bombs. # See rhbz #432903 for reasoning. * soft nproc ...

weixin_30451709的博客 177
上一篇: SELinux is preventing the ftp daemon from reading users home directories (./home).
下一篇: Windows Server2008 R2下安装Oracle 10g Checking installer requirements...
gray13
博客等级 码龄18年 23粉丝 20原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值