1.签到题
Ao(mgHX^E)AN2PSBOu3qI0o
其中有^这种偏僻的字符,应该是base64以上的加密,猜想是base85,所以在线解密了一下,得到flag
2.抱我
cstring = 'abcdefghijklmnopqrstuvwxyz{}_0123456789'
key = 'flag{********}'
length = 300
def encode():
res = ''
for i in range(1, length):
c = random.randint(0, 36)
res += cstring[c]
for n in range(10):
c = random.randint(0, len(key) - 1)
res += key[c]
return res
#qdfl33{6{6gs3afa6{3}agf{}aagdf}6fl36d{dfl{6ay6gafddfg}{j3f}}6la{3}bfdf3}gla}65}lg6g6dflf0{dfgd3fdfgc{g6a}a3{6}mfa{}f}f}}}3363}}f6a6a7g{a}g66{d3xgfffg}a}3}_{lad}a33ga5fd33}{{dl}{}f{3da
题目如上,首先分析代码
其实前面一大部分都没什么用,关键代码从for n in range(10)开始,大体意思就是随机从key也就是先取cstring中一个字符再从flag中取连续10个字符,以此循环,然后解题脚本就是反过来
即从res中第二个字符开始连续取十个,然后再隔一个,以此类推,脚本如下:
def decode(cipher):
decipher = ''
for i in range(1, len(cipher), 11):
decipher += cipher[i: i + 10]
return decipher
cipher = 'qdfl33{6{6gs3afa6{3}agf{}aagdf}6fl36d{dfl{6ay6gafddfg}{j3f}}6la{3}bfdf3}gla}65}lg6g6dflf0{dfgd3fdfgc{g6a}a3{6}mfa{}f}f}}}3363}}f6a'
print(decode(cipher))
得到一串flag的乱码,词频统计:
得到flag{36d}
3.妈呀,完了
先是二进制转字符串,上脚本:
int_ = "010001000101001101111001001100110100101001111001010010110" \
"1110110010100000100001101010000011011010100100000110100010" \
"10111010000110111101000101011010101000110100001010111011010" \
"010011001001000110011001110100101101101111001110010110010101" \
"0100110101000001010101001101000110010100110101011001110010101" \
"10110101001011010010101010011001101000110011100100101011101001110" \
"01110110010011000100110100110101001101010110101101000101011001100" \
"011000101101000010001010110110101001110011100100111010100101011010011100100010100110011"
str_ = "".join([chr(int(int_[i:i+8], 2)) for i in range(0, len(int_), 8)])
print(str_)
得到DSy3JyKvPCPmH4WCz+ThWi2FgKo9eSPU4e5g+jZU3FrWNvLM55kEf1hEmNru+NE3
听大佬说是AES加密,然后结合题目名称和图片,猜想密码可能是20122112(玛雅世界末日的时间)
然后在线解密一下:
得到flag{第13个伯克盾将会结束}