BUUCTF-Crypto(6)

312 阅读6分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第30天,点击查看活动详情

密码学的心声

二战时期,某国军官与一个音乐家情妇相好,然而自从那时起,他屡战屡败,敌人似乎料事如神。他也有怀疑过他的情妇,但是他经过24小时观察他的情妇,发现她每天都只是作曲,然后弹奏给战地电台,为士兵们鼓气,并未有任何逾越。那么,间谍到底是谁?这张曲谱是否有猫腻?

给了个谱子,但是没学过音乐只看懂了114514,我们尝试三个分一组转ASCII码:

l = [111,114,157,166,145,123,145,143,165,162,151,164,171,126,145,162,171,115,165,143,150]
res = ''
for i in l:
    i = str(i)
    res += chr(int(i,8))
print(res)

得到了明文:

flag{ILoveSecurityVeryMuch}

[GXYCTF2019]CheckIn

dikqTCpfRjA8fUBIMD5GNDkwMjNARkUwI0BFTg==

base64解码,发现还是密文:

v)L_F0}@H0F49023@FE0#@EN

直接放ciphey里解也行,或则经过测试会发现是rot47解密得到结果

flag{Y0u_kNow_much_about_Rot}

达芬奇密码

达芬奇一直是一个有争议的画家,科学家。。。小明为了研究他,从网上找到了名画蒙娜丽莎,一天深夜,小明突然从蒙娜丽莎背后的天空中看到了一串神秘的数字。顺带告诉小明达芬奇家窗台上有一串数字是关键。

下载附件,发现如下资料:

(答案是一串32位十进制数字) 
达芬奇隐藏在蒙娜丽莎中的数字列:1 233 3 2584 1346269 144 5 196418 21 1597 610 377 10946 89 514229 987 8 55 6765 2178309 121393 317811 46368 4181 1 832040 2 28657 75025 34 13 17711 
记录在达芬奇窗台口的神秘数字串:36968853882116725547342176952286

怀疑是斐波那契数列的变形。从数字列中挨个取出数字,查询其在斐波那契数列中的位置,将密文c对应位置的数字,移到相应的位置即可。

找到了个大佬的脚本:

#主要思路是遍历fakefibbo,然后找出对应哪一位,如fb中第二个数对应rb中第五个
#然后cipher对应fakebibbo,因此cipher中第二个数对应flag第五个数
#因此有reslut[4]=cipher[1],依次类推
realfibbo = '1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269 2178309'
fakefibbo = '1 233 3 2584 1346269 144 5 196418 21 1597 610 377 10946 89 514229 987 8 55 6765 2178309 121393 317811 46368 4181 1 832040 2 28657 75025 34 13 17711'
cipher = '36968853882116725547342176952286'
realfibbo = realfibbo.split(' ')
fakefibbo = fakefibbo.split(' ')
result = ['a']*32
for i in range(len(cipher)):
#这里要考虑到第二个1(fb[24])寻找的时候,会找到1123中第一个数,也就是index=0,而我们希望他找到第二个数,也就是index=1
    if(i == 24):
        index = 1
    else:
        index = realfibbo.index(fakefibbo[i])
    result[index] = cipher[i]
for i in result:
    print(i,end='')
flag{37995588256861228614165223347687}

rot

破解下面的密文:

83 89 78 84 45 86 96 45 115 121 110 116 136 132 132 132 108 128 117 118 134 110 123 111 110 127 108 112 124 122 108 118 128 108 131 114 127 134 108 116 124 124 113 108 76 76 76 76 138 23 90 81 66 71 64 69 114 65 112 64 66 63 69 61 70 114 62 66 61 62 69 67 70 63 61 110 110 112 64 68 62 70 61 112 111 112

已知是rot加密,我们常使用脚本把所有偏移的跑出来

a = '83 89 78 84 45 86 96 45 115 121 110 116 136 132 132 132 108 128 117 118 134 110 123 111 110 127 108 112 124 122 108 118 128 108 131 114 127 134 108 116 124 124 113 108 76 76 76 76 138 23 90 81 66 71 64 69 114 65 112 64 66 63 69 61 70 114 62 66 61 62 69 67 70 63 61 110 110 112 64 68 62 70 61 112 111 112'
b = a.split(' ')
flag = ''


for i in range(0,26):
    flag = ''
    for j in range(len(b)):
        flag += chr(int(b[j])-i)
    print(flag)

得到如下结果

FLAG IS flag{www_shiyanbar_com_is_very_good_????}
 MD5:38e4c352809e150186920aac37190cbc

还是未知,告诉我们了md5值,可能是在提示我们爆破md5的值。

demo='flag{www_shiyanbar_com_is_very_good_'
check = '38e4c352809e150186920aac37190cbc'
 
for i in range(32,126):
    for j in range(32,126):
        for k in range(32,126):
            for m in range(32,126):
                tmp = demo + chr(i) + chr(j) + chr(k) + chr(m) + '}'
                hash = hashlib.md5(tmp.encode('utf8')).hexdigest()
                if check == hash:
                    print(tmp)
                    exit()

可以得到flag:

flag{www_shiyanbar_com_is_very_good_@8Mu}

[WUSTCTF2020]佛说:只能四天

下载附件,发现是与佛论禅加密:

hi.pcmoe.net/buddha.html

发现又是个社会主义价值观加密:

RLJDQTOVPTQ6O6duws5CD6IB5B52CC57okCaUUC3SO4OSOWG3LynarAVGRZSJRAEYEZ_ooe_doyouknowfence

提示我们栅栏密码:

R5UALCUVJDCGD63RQISZTBOSO54JVBORP5SAT2OEQCWY6CGEO53Z67L_doyouknowCaesar

又提示我们凯撒密码,在位移数为三时得到:

O5RXIZRSGAZDA63ONFPWQYLPL54GSYLOM5PXQ2LBNZTV6ZDBL53W67I

接着base32解密:

flag{ni_hao_xiang_xiang_da_wo}