2014-04-22 2 views
2

system을 사용하여 루비 프로그램에서 nmap을 실행하려고합니다. 나는 다음과 같은 형식을 사용하고 있으므로 쉘 주입을 방지하기 위해 인수의 일부를 탈출하려는 : 이것은 잘 작동루비 시스템 인수

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

그러나 내가 표준 출력에 출력 XML로 -oX - 옵션을 사용합니다. 다음 코드는하지만 작동하지 않습니다

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

-oX - 인수는 무시하는 것, 사람이 해결 방법을 제안 할 수 있습니다? 또한 인수에 공백을 탈출

+0

이'시스템 시도 ("nmap은 -sn -ox - # {호스트 이름}")'hostname'에서' –

+0

것이다 탈출 쉘 메타 문자를? – Slicedpan

+0

'hostname'은 루비 변수입니까? –

답변

7

system으로 -oX -와 시스템 호출 효과적으로 하나의 인자의 공간 인 부분

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

로 호출됩니다. 따라서 nmap의 유효한 인수로 간주되지 않습니다. 이 문제를 해결하려면 실제로 두 개의 인수로 전달해야합니다. 여기에서 하나의 인자의 공간은 이스케이프되지 않습니다

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

훌륭함, 트릭 덕분입니다. – Slicedpan

관련 문제