【问题标题】:Ruby system argumentsRuby 系统参数
【发布时间】:2014-06-06 20:21:01
【问题描述】:

我正在尝试使用 system 从 ruby​​ 程序运行 nmap。我想转义一些参数以防止 shell 注入,所以我使用以下形式:

system('nmap', '-sn', hostname)

这很好用,但是我想使用-oX - 选项将xml 输出到标准输出。以下代码似乎不起作用:

system('nmap', '-sn', '-oX -', hostname)

-oX - 参数似乎被忽略了,有人可以提出解决方法吗?

【问题讨论】:

  • 试试这个system("nmap -sn -oX -#{hostname}")
  • 会在hostname 中转义shell 元字符吗?
  • hostname 是 ruby​​ 变量吗?
  • 是的,可能包含不受信任的用户输入

标签: ruby shell nmap


【解决方案1】:

由于system 也会在参数中转义空格,因此您使用-oX - 的系统调用将被有效地调用为

nmap "-sn" "-oX -" "example.com"

空格是单个参数的一部分。因此它不会被认为是 nmap 的有效参数。要解决此问题,您实际上必须将其作为两个参数传递。这里,单个参数中的空格不会被转义:

system('nmap', '-sn', '-oX', '-', hostname)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-06
    • 1970-01-01
    • 1970-01-01
    • 2011-08-14
    • 2017-08-30
    • 2023-03-31
    • 1970-01-01
    • 2014-09-02
    相关资源
    最近更新 更多