
观察代码加密逻辑,根据correctpassword反推明文密码
加密逻辑:
第一层:对输入明文进行base64编码
第二层:加字符串“xH7jK”混淆后base64编码,再删去前三位
第三层:对编码结果进行反转
第四层:前加字符串“aB3”后加字符串“qW9”后进行base64编码,再删去前两位
第五层:在进行一次base64编码
反推逻辑:
第一层:进行一次base64解码
第二层:把aB3和qW9编码结果与第一层解码结果对比,删去aB3和qW9编码部分
第三层:第二层结果反转
第四层:爆破前三位删去后五位
第五层:base64解码
注:这题比较有意思的点是反解到第二层时需要写py脚本对前三位未知数进行爆破
for combo in itertools.product(str_1,str_1,str_1):
passwd_1=”.join(combo)+passwd_2
passwd_0=str(base64.b64decode(passwd_1))[slice(0,-6)]
passwd=passwd_0[slice(2, None)]
if re.match(r’^[A-Za-z0-9]{3}’, passwd):
filtered = [s for s in str(base64.b64decode(passwd)) if ‘\’ not in s]
passwd=””.join(filtered)[slice(2,None)]
print(passwd[0:-1])
for p in range(1):
head={
“User-Agent”:”ctf-show-brower”
}
data={
“username”:”admin”,
“password”:”{}”.format(passwd[0:-1])
}
HTTP_1=requests.post(‘http://48599434-5121-464b-8f67-5c2ab7a6cd25.challenge.ctf.show/check.php’,headers=head,data=data)
file = open(‘2.txt’,’w’,encoding=’utf-8′)
file.write(str(HTTP_1.text))
if HTTP_1.text.find(‘Flag’)>0:
print(“成功!!!!!!!!!!当前为:”+passwd)
file = open(‘1.txt’,’w’,encoding=’utf-8′)
file.write(str(passwd))
else:
print(“失败!当前为:”+passwd[0:-1])
发表回复