CRYPTO

CRYPTO3

直接在当前页面打开控制台,然后将那串东西复制进去,按回车,flag就出来了

 

一.萌新赛

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加密,然后结合题目名称和图片,猜想密码可能是20121221(玛雅世界末日的时间)

然后在线解密一下:

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

二.BJDCTF2020

1.签到题

这题直接在线16进制转字符串就行了

2.编码与调制

打开图片,以为和二进制有什么关系,琢磨了好长时间,最后题解说是曼彻斯特编码,于是去科普了一下曼彻斯特编码

其实曼彻斯特编码就是一种用电平跳变来表示1或0的编码方法

而那个图片其实就暗示了是曼彻斯特编码

用在线工具解码一下

然后再16进制转字符串就得到flag

 

 

posted @ 2021-08-22 17:22  Athena-ydy  阅读(283)  评论(6)    收藏  举报