向linux shell中的stdin发出多个命令。我正在使用DVWA高级命令注入进行练习。我知道|
有一个漏洞,但我正在寻找一种获得如下输出的方法:
root@vwksOffensive:~# 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
root@vwksOffensive:~#
从
开始<<<printf "[ping ip argument] \u003B the_command_I_choose"
我的问题是可以做到这一点:
root@vwksOffensive:~# ping -c 4 <<<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
root@vwksOffensive:~#
但我无法做到这一点:
root@vwksOffensive:~# ping -c 4 <<<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
root@vwksOffensive:~#
,甚至没有:
root@vwksOffensive:~# ping -c 4 <<<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
root@vwksOffensive:~#
我深入搜索,最相似的,如果可以这么说,是这个问题的第一个答案: How to make a bash function which can read from standard input?
不幸的是,这并没有完全帮助我,所以我决定在这里发布我的问题,因为我确信,在我的无知中,我错过了一些东西。
解决方案必须包含char ;
或以unicode编码的任何其他所需的特殊字符。禁止,用空格,char替换如下:
$substitutions = array(
'&' => '',
';' => '',
'| ' => '',
'-' => '',
'$' => '',
'(' => '',
')' => '',
'`' => '',
'||' => '',
);
答案 0 :(得分:0)
如果您选择的“命令”在这样的变量中:
mycmd="ls -l"
然后你可以将你的命令和其他命令包装在这个包围的子shell中:()
子shell的输出可以重定向到您想要的任何其他命令。例如tail,grep,&gt; $ log等。
您要发送ping的IP地址也可以是变量名:
myip=10.0.0.1
(ping $myip ; $mycmd ) > logfile.txt
目前尚不清楚为什么要将其发送给&lt;&lt;&lt;而不是直接在命令行上。如果必须使用&lt;&lt;&lt;,那么仍然尝试在()括号中包装命令,并在&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; 10.0.0 .. 和“ls -l”。括号将告诉bash,在看到右括号之前,命令不会完成。回车将停止&lt;&lt;&lt;&lt;从消耗下一个命令。