【问题标题】:A regular expression in Perl to capture the Fork bomb command [closed]Perl 中用于捕获 Fork 炸弹命令的正则表达式 [关闭]
【发布时间】:2014-02-10 09:57:25
【问题描述】:

我正在尝试在 Perl 中使用正则表达式来捕获以下 fork 炸弹命令:

:(){ :|:& };:

以下是我想出的。

:\s*(\s*)\s*{\s*:\s*|\s*:\s*&\s*}\s*;.*:

我同意此正则表达式存在限制。 fork 炸弹命令可以很容易地更改,并且给定的正则表达式不会捕获它。但是,正则表达式是必需的。有没有更好的方法在 Perl 中捕获这个特定的?

【问题讨论】:

  • 有什么意义?你稍微改变一下,它仍然是一个分叉炸弹,但正则表达式不会识别它..
  • 试图用正则表达式捕获它最终是徒劳的。不要从不受信任的来源运行 shell 命令。
  • 您是在尝试使用您的正则表达式捕获完全上述命令还是任何分叉炸弹命令?
  • 如果你想捕获它以阻止它运行,我不明白这有多实用。处理此问题的更好方法是在 /etc/security/limits.conf 中编辑用户/组限制。
  • regex is a requirements”——这是作业吗?如果是这样,这更多是关于您对正则表达式元字符的理解,而不是提供安全性。您是否已经逃脱了所有需要转义的角色?否 - | 分隔备选方案,{} 是重复运算符,() 是捕获组。

标签: regex perl bash shell


【解决方案1】:

琐碎:

/\Q:(){ :|:& };:/

现在告诉我们您真正想要实现的目标:您希望匹配该确切文本的哪些变体。如果你能用英语描述它,你就有机会获得它的正则表达式;如果不是,不是。

【讨论】:

  • 谢谢。我知道 \Q 返回所有以下非单词字符的反斜杠值。但是,如果中间有额外的空格,您的正则表达式不会捕获 fork 炸弹。最终,我希望创建一个正则表达式,即使函数名称“:”不同,也能捕获给定的 fork 炸弹。
猜你喜欢
  • 1970-01-01
  • 2014-08-31
  • 1970-01-01
  • 1970-01-01
  • 2021-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多