一.萌新赛

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的乱码,词频统计:

CRYPTO_5g

得到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(玛雅世界末日的时间)

然后在线解密一下:

CRYPTO_3d_02

得到flag{第13个伯克盾将会结束}