2017-02-05 4 views
0

Я тренируюсь с инъекцией команды высокого уровня DVWA. Я знаю, что есть отверстие для |, но я ищу способ, чтобы получить выходной сигнал, как следующее:Как выдать несколько команд для stdin в оболочке linux с помощью <<< printf

[email protected]:~# ping -c 4 10.0.0.1 ; ls 
PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data. 

--- 10.0.0.1 ping statistics --- 
4 packets transmitted, 0 received, 100% packet loss, time 3066ms 

a a_post Documenti Immagini    Modelli Musica pocl   rockyou.txt Scrivania WebScarab.properties 
Add b  hash  JavaSnoop.properties mtu  plain Pubblici Scaricati Video 
[email protected]:~# 

начиная с

<<<printf "[ping ip argument] \u003B the_command_I_choose" 

Моя проблема заключается в том, что может сделать это:

[email protected]:~# ping -c 4 &lt;&lt;&lt;printf "10.0.0.1" 
PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data. 

--- 10.0.0.1 ping statistics --- 
4 packets transmitted, 0 received, 100% packet loss, time 3055ms 

[email protected]:~# 

, но я не могу это сделать:

[email protected]:~# ping -c 4 &lt;&lt;&lt;printf "10.0.0.1 \u003b ls" 
PING 10.0.0.1 \u003b ls (10.0.0.1) 56(84) bytes of data. 

--- 10.0.0.1 \u003b ls ping statistics --- 
4 packets transmitted, 0 received, 100% packet loss, time 3075ms 

[email protected]:~# 

и даже не в этом:

[email protected]:~# ping -c 4 &lt;&lt;&lt;printf "10.0.0.1 ; ls" 
PING 10.0.0.1 ; ls (10.0.0.1) 56(84) bytes of data. 

--- 10.0.0.1 ; ls ping statistics --- 
4 packets transmitted, 0 received, 100% packet loss, time 3075ms 

[email protected]:~# 

Я искал глубоко и наиболее близки, если можно сказать так, это первый ответ на этот вопрос: How to make a bash function which can read from standard input?

К сожалению, это не помогло мне полностью, поэтому я решил опубликовать здесь свой вопрос, потому что я уверен, что, по моему невежеству, я что-то упускаю.

Решение должно содержать символ ; или любой другой необходимый специальный символ, закодированный в юникоде. Запрещено, замещенный пустой, голец является следующим:

$substitutions = array(
     '&' => '', 
     ';' => '', 
     '| ' => '', 
     '-' => '', 
     '$' => '', 
     '(' => '', 
     ')' => '', 
     '`' => '', 
     '||' => '', 
    ); 
+1

Непонятно, что вы пытаетесь сделать: 'ping -c 4 <<< printf" 10.0.0.1 "' эквивалентно 'ping -c 4" 10.0.0.1 "<<< printf', что является normal 'ping', которому присваивается' printf' на своем стандартном входе, который он игнорирует. – chepner

ответ

0

если «команда, которую вы выбираете» находится в переменном, как это:

mycmd="ls -l" 

, то вы можете обернуть вашу команду и другие команды в суб-оболочка, окруженная этим:()

Выход для суб-оболочки можно перенаправить в любую другую команду, которую вы хотите. например хвост, Grep,> $ журнал и т.д.

IP-адреса, которые вы хотите отправить пинг также может быть в имени переменной:

myip=10.0.0.1 

(ping $myip ; $mycmd) > logfile.txt 

Не понятно, почему вы хотите, чтобы отправить его в с < < < вместо непосредственно в командной строке. Если вы должны использовать <, тогда попробуйте обернуть команды в() круглой скобке и поместите возврат каретки после < < < 10.0.0 .. и «ls -l». В скобках указывается bash, что команда не выполняется до тех пор, пока не будет замечена закрывающая скобка. Возврат каретки останавливает < < < от потребления следующей команды.

+0

'<<<' '' 'bash''ism, известный как * herestring *, который позволяет переназначить переменную' stdin', избегая 'pipe'. (если это то, что ваш "* Непонятно, почему вы хотите .... *"). –

+0

Благодарю всех вас за поддержку, я хотел бы уточнить контекст, чтобы сосредоточиться на существенной проблеме. – Raffa

+0

1) поле ввода команды dvwa (проклятое веб-уязвимое приложение), команда выполняется во внутреннем интерфейсе: – Raffa

Смежные вопросы