找回密码
 立即注册
首页 业界区 安全 西电CTF平台writeup

西电CTF平台writeup

杓疠? 2025-6-19 15:31:51
moectf是对ctf小白入门非常友好的一个网站,若对ctf感兴趣,可以一起加油进步
练习网址:https://ctf.xidian.edu.cn/training
强壮密码人

古典密码与编码

1. Augustine's Way

凯撒密码解密。
1.png

2. Augustine's Way#2

直接放入随波逐流CTF编码工具一键解码。
2.png

3. Ex Viginere?

根据重合指数爆破出密钥长度,计算k1和k2,就可以还原明文。在足够长的英文文本中,每个字母出现的频率有一个确定的值,重合指数就是根据这一统计规律来计算的。
[code]import gmpy2f = open(r'C:\Users\lvqiyun\Desktop\cipher','r')c = f.read()f.close()# 我们已经知道,维吉尼亚密码可以被分解为若干组平移密码来破译,# 而一个明文足够长的平移密码的重合指数接近 0.0687。# 换言之,如果我们选取某个 l 值,使得分组后的密文的重合指数接近 0.065,# 则说明选取的 t 值与密钥的长度是一致的。best_index = 0.065sum = 0dic_index = {'a': 0.08167,'b': 0.01492,'c': 0.02782,'d':0.04253,'e': 0.12702,'f':0.02228,'g': 0.02015,'h':0.06094,'i':0.06966,'j':0.00153,'k':0.00772,'l':0.04025,'m':0.02406,'n':0.06749,'o':0.07507,'p':0.01929,'q':0.00095,'r':0.05987,'s':0.06327,'t':0.09056,'u':0.02758,'v':0.00978,'w':0.02360,'x':0.00150,'y':0.01974,'z':0.00074}def IndCo(s):    # 计算字符串的重合指数(所有字母出现频率的平方和)    # 输入 s     # 输出 重合指数    alpha = 'abcdefghijklmnopqrstuvwxyz'    freq = {}    for i in alpha:        freq = 0    for i in s:        freq =  freq + 1    index = 0    for i in alpha:        index = index + (freq*(freq - 1 )) / (len(s) * (len(s) - 1 ))    return indexdef IndCo_m(s):    # 计算明文 s 中的各字母频率和英文字母中的频率吻合程度    # 输入:明文 s    # 输出:吻合程度    alpha = 'abcdefghijklmnopqrstuvwxyz'    freq = {}    for i in alpha:        freq = 0    for i in s:        freq += 1    index = 0    for i in alpha:        index += freq / len(s) * dic_index    return indexdef get_keylen(c):    # 求出最符合统计学的 m,n 的最小公倍数,方法通过爆破足够大的周期样本,观察成倍出现的周期    # 计算方法是解出每一个子密文段的重合指数然后求平均值 在和最佳重合指数相减 误差小于 0.01    # 输入:密文    # 输出:公共周期列表    keylen = []    for i in range(1,100):        average_index = 0        for j in range(i):            s = ''.join(c[j+i*x] for x in range(0,len(c)//i))            index = IndCo(s)            average_index+=index        average_index = average_index/i - best_index        if abs(average_index)导出对象->HTTP,将两个upload文件保存下来。
3.png

4.png

1个只有1kb,一个有3617kb
5.png

打开1kb的内容如下,提示压缩包文件上传成功。
6.png

看来压缩包在另外一个文件中,利用kali的foremost命令分解,得到压缩包,解压得到MP3、gif和zip文件。MP3文件用audacity软件打开,没有发现。stegsolve打开gif文件,查看每一帧,在第30帧看到一个密码。
7.png

尝试用这个密码去解压缩包,密码不多,看来这密码是用于MP3文件的,利用MP3Stego软件解密。
Decode.exe -X -P C5EZFsC6 brainfuck.mp3
8.png

打开brainfuck.mp3.txt,发现是brainfuck编码方式,brainfuck解码一下。
9.png

10.png

拿到密码解压,拿到三个txt文件,全是1和0组成的字符串。根据提示,是福尔摩斯小人编码。
11.png

根据福尔摩斯小人密码表对照得到flag。
12.png

13.png

14.png

15.png

moectf{PEOPLE_DANCING_HAPPILY}</p>未完待续。。。



来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册