Ruby系统参数

Sli*_*pan 2 ruby shell nmap

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

system('nmap', '-sn', hostname)
Run Code Online (Sandbox Code Playgroud)

这工作正常,但是我想使用-oX -选项将xml输出到stdout.以下代码似乎不起作用:

system('nmap', '-sn', '-oX -', hostname)
Run Code Online (Sandbox Code Playgroud)

这个-oX -论点似乎被忽略了,任何人都可以建议一个解决方法吗?

Hol*_*ust 7

同样system也会转义参数中的空格,系统调用-oX -将被有效地称为

nmap "-sn" "-oX -" "example.com"
Run Code Online (Sandbox Code Playgroud)

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

system('nmap', '-sn', '-oX', '-', hostname)
Run Code Online (Sandbox Code Playgroud)