BugKu解题记录–Crypto
1. /.-
根据图中的描述可知,这一长串是摩斯电码的形式,所以找到一个解码器(https://tool.lu/morse/index.html)进行解码,得到结果:FLAG?D3FCBF17F9399504?。
由于平时提交flag时,flag是小写的形式,所以尝试将所有字符替换为小写字符再提交,flag{d3fcbf17f9399504},结果正确。(其实是大写提交显示错误,所以尝试小写的…)
ps:附张摩斯电码的图,提醒自己。
2. 聪明的小羊
根据提题目描述,找到关键词“栅栏”,另外看后边的字符串的形式也很眼熟。
所以直接使用栅栏加密/解密工具(https://ctf.bugku.com/tool/railfence)进行解密,得到结果flag{6fde4163df05d900}。
提交成功~
3. ok
第一次做,根据评论区大佬的说法,这道题需要用到Ook!解密,在这个网站(https://www.splitbrain.org/_static/ook/index.php)中进行解密,得到flag。
附一个BF和OK的介绍链接,解密工具也是这里找到的,谢谢大佬~
https://blog.csdn.net/qq_73792226/article/details/143990891
下载附件,得到一个被Ook加密过后的文件:
在上边的解密工具中输入密文,见证奇迹的时刻(Ook! to Text)~
当当当当~ “flag{0a394df55312c51a}”
提交成功~
4. [±<>]
跟上一题很相似,复制所有描述内容,进行brainfuck解密(同样在前边的工具中进行解密)。
“flag{0d86208ac54fbf12}”
提交成功~
5. 散乱的密文
看描述中,格式与平时flag的格式很接近,再加上后边写的216534,所以考虑是置换加密。
由于“216534”中最高为6,且“lf5{ag024c483549d7fd@@1}”中一共24位,所以将其6位一组分为4组。
在excel中将所有字符分组,并分别标注216434,再在每组中重新进行排序,得到结果:
得到结果“flag{52048c453d794df1}”,提交成功~
6. .!?
这三种符号,可以联想到Ook解密,同样在前边提到的工具中进行解密,得到结果:flag{bugku_jiami}
提交成功~
7. 这不是md5
在描述中看到,是一串数字加字母的字符串,考虑是编码解码。使用在线工具(http://www.hiencode.com/hex.html)进行解码,得到结果:“flag{ae73587ba56baef5}”
提交成功~
在评论区看到另一个解码方法,使用cyberchef,点击右边魔法棒,同样得到结果:“flag{ae73587ba56baef5}”
8. 贝斯家族
这道题的话,使用base91解码(我自己是一个一个解码方式尝试的),评论区大佬提示:
“base91 特征:密文由91个字符(0-9,a-z,A-Z,!#$%& ()*+,./:;<=>?@ []^_` {|}”)”
记住特征会省很多时间。
使用在线工具进行解码,得到结果:“flag{554a5058c9021c76}”
提交成功~
9. 把猪困在猪圈里
又认识了一个新的加密方式。
下载附件,打开:
根据大佬们的描述,“有/+=,基本确定是base64”,然后将“base64转为图片”,使用在线工具(https://tool.jisuapi.com/base642pic.html)进行转换
再通过在线猪圈密码解密工具(https://www.metools.info/code/c90.html)进行解密,得到结果(加上描述中的flag{}):flag{thisispassword}
提交成功~
10. 黄道十二宫
下载附件打开图片:
该题目是根据真实事件改编,所以解码方式也同样如此(详见:https://www.bilibili.com/video/BV1Ra411F7tv/?vd_source=46d6737b0759f5e7f01c6fed6461f12f)
(https://www.yuque.com/peiqi-qfjoa/uniptm/de7hrxppep2s1hp4?singleDoc)
在这里参考大佬的解法,直接运行代码,得到转换后的上图结果。然后将结果输入AZdecrypt中进行替换,得到替换后的结果:
断句后可以发现flag。
flag{alphananke}
提交成功~
11.抄错的字符
https://blog.csdn.net/m0_57579266/article/details/138848179
根据该文章中博主的代码,运行

QW1hbl92ZXJ5X2Nvb2w=
这就是原本没写错的内容。
flag{Aman_very_cool}
提交成功
12. 你以为是md5吗?
看了评论才知道,这道题的重点在于搞清楚 md5摘要的形式是16进制的 ,也就是由 0-9 以及 a-f 所组成的。
所以下载附件可以看到里边有一些字符是不在上述范围内的,删掉它们,再进行md5解密就可以得到结果。
删除红色框出的字符
MD5解哈希(https://www.cmd5.com/default.aspx)
flag{666666666666}
提交成功。
13. easy_hash
下载附件,打开压缩包,发现有两个文件,一个output,一个flag.py。
flag.py文件。根据文件中的代码内容可知,该代码功能是将文件flag中的字符读取后进行md5哈希运算,然后将哈希结果存放到output文件中。
output文件内容。
根据代码内容可知,现在需要对output中的内容进行批量解密。
找个在线批量解密网站(https://pmd5.com/piliangmd5.html)
(PS:该网站可以批量解密,在原本字符的最右边,后就是解密结果,可以直接手动写结果,也可以用上边的“复制所有粘贴到表格”功能,再找个文本文档粘贴看结果。如果是csv表格导出看到的结果不全,没有符号。)
结果如上图红框中的内容,显示的有些乱,但是能够看出flag了。
flag{We1c0me_t0_the_w0r1d_0f_md5}
提交成功~
这道题另外在评论区看到一个大佬是这么说的,有能力的小伙伴可以尝试一下哦~
14. easy_crypto
下载附件,打开发现是01的组合。
使用“随波逐流”一键解码,能够看到摩斯解码出了结果。
直接复制粘贴不对,转换为小写,可以使用excel进行便捷转化(LOWER函数)
输完回车enter
下边的就是flag。这里不建议手动转换为小写,比如图里的是“m0rse”而不是“morse”,就很容易出错,所以使用excel就很方便。
提交成功~
15. 一段新闻
下载附件打开
打开附件后发现有很多方框,考虑可能是有隐藏字符。
“随波逐流”不可直接一键解码,所以寻找在线的隐藏字符解密工具(http://www.atoolbox.net/Tool.php?Id=829)
解密后的明文是社会主义核心价值观,现在再使用“随波逐流”一键解码,得到结果。
flag{why_d0nt_you_try_t0_understand_socia1ism?}
提交成功~
16. 来自宇宙的信号
下载附件,打开是个图片
也是之前没见过的,大佬们说是标准银河字母,那就直接找原本的对照表
(图片出自该博客:https://blog.csdn.net/weixin_43211186/article/details/125180939)
对照后发现,图中的银河字母翻译过来就是:NOPQRST
所以flag就是 flag{nopqrst}
提交成功~
17. 你懂我的乐谱吗?
下载打开附件,发现是乐谱,认不出来,只能12345一个一个数了…
翻成简谱大概是:" 6,高音5(一个点),1,7,高音2(一个点),高音5(两个点),5,高音6(一个点),1,高音4(俩点),高音4(一点),3,高音2(一点),高音5(两个点),高音5(两个点),高音1(两个点),1,3,高音1(一点),高音1(一点),高音5(一点),7 "
从1-7、高音1-7(一个点)、高音1-7(2个点) 对照为字符就是从A-U
所以五线谱对照到字符就是:FLAGISEMARKCISSOACHHLG
分隔字符,也就是FLAG IS EMARKCISSOACHHLG
flag{EMARKCISSOACHHLG} 提交成功。
详细的 乐符-字符 对照可以看一下这个博文,讲的很详细(https://blog.csdn.net/MarkRao/article/details/120056540)。
18. Crack it
下载附件,使用Linux中的john工具进行爆破
(右击文件,选择“Open Terminal Here”,打开控制台)
在控制台中输入指令:“john shadow”,回车enter,得到了结果,该结果就是flag中的内容。
flag{hellokitty} 提交成功。
19. 你喜欢下棋吗
下载附件,先打开解压密码.txt文件
又学了一个加密方式:棋盘密码
使用随波逐流解密,得到压缩包解压密码为:thisispolybius
解压压缩包,打开里边的flag.txt文件
依旧使用“随波逐流”解码,得到花括号中的内容为BAUD0TC0DE,提示要换成小写。
这里为什么是这种解码方式,“一种5bit的编码其实就是博多baudot码编码”,根据评论区大佬的说法确定了这个结果。如果不知道这个编码方式,可能就得硬看解码之后的所有结果然后再试了。
一样在excel中使用lower函数转换为小写,得到flag为 bugku{baud0tc0de} ,提交成功。
20. 小山丘的秘密
下载附件解压打开
根据题目猜测是hill加密,再根据flag.txt(花括号内为密文)和图片文件(棋盘,33的矩阵)确认就是(根据A=1确认),找hill在线解码工具(https://ctf.bugku.com/tool/hill)直接进行解码。
(关于hill加密,原理可以看这位大佬的描述 https://blog.csdn.net/Secret_1943/article/details/110674955)
在这里需要注意,根据flag.txt文件提示,A=1,所以记得选择模式2,右边选择33矩阵,填入图片中提示的矩阵,再解密得到结果**{WHATAHILL}**
根据flag.txt文件提示,记得将括号内的内容都修改为小写再提交
提交成功~
21. EN-气泡
下载附件打开
气泡密码基本识别:x开头,x结尾,某些特定位是元音字母,而且出现频率特别高,而且基本单元是5元组。
(https://blog.csdn.net/qq_41696858/article/details/119482949?ops_request_misc=%257B%2522request%255Fid%2522%253A%252290216b229f8ba3ffa29b0c00cd3ddae4%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=90216b229f8ba3ffa29b0c00cd3ddae4&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-1-119482949-null-null.142v101pc_search_result_base6&utm_term=%E6%B0%94%E6%B3%A1%E8%A7%A3%E5%AF%86&spm=1018.2226.3001.4187)
找在线气泡解密,但是工具一直没有解码成功,再找找大佬们的脚本吧(为此把pycharm和python重装了一遍,之前的pycharm到期了,导不了库,一波好多折…)
费劲巴拉终于把pycharm和python整好了,跑了大佬的脚本,得到了结果 bugku{th1s_1s_A_Bubb13}
(脚本及解题思路来自:https://blog.csdn.net/qq_46230755/article/details/113359350?ops_request_misc=&request_id=&biz_id=102&utm_term=%E6%B0%94%E6%B3%A1%E8%A7%A3%E5%AF%86&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-2-113359350.142v101pc_search_result_base6&spm=1018.2226.3001.4187)
from bubblepy import BubbleBabble
#导入包bubblepy
str='xivak-notuk-cupad-tarek-zesuk-zupid-taryk-zesak-cined-tetuk-nasuk-zoryd-tirak-zysek-zaryd-tyrik-nisyk-nenad-tituk-nysil-hepyd-tovak-zutik-cepyd-toral-husol-henud-titak-hesak-nyrud-tarik-netak-zapad-tupek-hysek-zuned-tytyk-zisuk-hyped-tymik-hysel-hepad-tomak-zysil-nunad-tytak-nirik-copud-tevok-zasyk-nypud-tyruk-niryk-henyd-tityk-zyral-nyred-taryk-zesek-corid-tipek-zysek-nunad-tytal-hitul-hepod-tovik-zurek-hupyd-tavil-hesuk-zined-tetuk-zatel-hopod-tevul-haruk-cupod-tavuk-zesol-ninid-tetok-nasyl-hopid-teryl-nusol-heped-tovuk-hasil-nenod-titek-zyryl-hiped-tivyk-cosok-zorud-tirel-hyrel-hinid-tetok-hirek-zyped-tyrel-hitul-nyrad-tarak-hotok-cuvux'
#str是待解密字符
Str=BubbleBabble()
print(Str.decode(str))
一次运行后的结果“xivak-norok-norad-tipol-norol-nipid-tisuk-zotak-nurud-tesil-nitok-hepod-torek-cesuk-coryd-tinak-zorik-nined-tomyl-nosal-hopid-tuvuk-zomek-zupod-tovuk-zumak-zoryd-tipuk-nyruk-zepyd-tonuk-zasol-nunud-tenok-nuvyl-nevax”,会发现比原本的密文短了一些
二次运行后的结果“ximil-hynyk-rotil-rytek-masal-folif-cysuh-zoboh-zobol-himok-dosyf-fizyx”
第三次运行后得到了结果:“bugku{th1s_1s_A_Bubb13}”
提交成功~
22.Math&English
下载附件打开,是一些数学题
做题,得到框出来的这些结果,根据大佬描述,数字都是1-5之间,满足元音密码,所以使用“随波逐流”一键解码,得到结果:“flagisyuanyinpwd”
删除“flagis”,再根据题目描述“bugku{}”,剩余的内容放入花括号内,提交成功~
23. 简单加密
注意flag的提交形式
根据大佬描述,根据字符串最后的AA联想到了==,继而想到应该是base64加密再偏移4位(ASCII码中,A是65,=是61)后得到了这个结果。使用大佬python脚本直接跑出结果
(解题思路和脚本来自:https://blog.csdn.net/m0_43405474/article/details/123259323?spm=1001.2014.3001.5501)
24. 告诉你个秘密
根据大佬描述,解题思路是:16进制(删除中间空格)转字符串–>字符串base64解码–>解码结果中加入删除的空格再键盘包围解码。
16进制转字符串:https://lzltool.cn/Toolkit/ConvertStringToHexadecimal
“cjV5RyBscDlJIEJqTSB0RmhCVDZ1aCB5N2lKIFFzWiBiaE0g”
“随波逐流”做后续工作
提交成功。
25. affine
这篇博客有详细说明仿射密码的原理:https://blog.csdn.net/MARS_098/article/details/102239842
根据y=17x-8,想到仿射密码,寻找在线工具解密(http://www.hiencode.com/affine.html)
提交成功。
26. MaybeEasyRSA
评论区没看懂,大佬的思路也没看懂,先留个地址再研究研究
https://blog.csdn.net/m0_57579266/article/details/138708136
该博客中代码运行结果为:“bugku{01a25ea3fd6349c6e635a1d0196e75fb}”
好好好,仔细研究了一下,大概明白了。
首先这道题附件中给出的代码,是描述对flag中的内容进行RSA加密的(代码中,flag的字段为空),所以最终的目的就是要对密文解密得到原始明文,也就是flag。
(RSA加密原理详解:https://blog.csdn.net/Demonslzh/article/details/130738368)
再回到大佬的代码里
这里的十次方根我根据豆包的分析结果明白:
已知p1和q1的值,n=p*q,且p和q是p1和q1的下一个素数,所以p1*q1的结果肯定是与p*q的值相近,也就是n约等于p1*q1约等于(r**5)^2=r**10(这里r**5是python中r的5次方),所以r的值是在n的十次方根附近。
针对最后一句的代码"r = int(mpmath.nint(mpmath.root(mpmath.mpf(n), 10)))",我找了豆包帮我解释一下:
(1)n_mpf = mpmath.mpf(n)
这一步将变量 n 转换为 mpmath 库中的高精度浮点数类型 mpf。因为 n 是一个非常大的整数(在 RSA 加密中,模数 n 通常是一个很大的数),使用高精度浮点数可以避免在后续计算中出现精度丢失的问题。
(2)root_result = mpmath.root(n_mpf, 10)
这一步计算 n_mpf 的 10 次方根。在 RSA 加密的特定情境下,代码中 p 和 q 是通过 r 的多项式生成的,根据前边的分析结果,通过计算 n 的 10 次方根得到 r 的近似值。
(3)rounded_result = mpmath.nint(root_result)
这一步对计算得到的 10 次方根结果进行四舍五入,得到最接近的整数。因为 r 是一个整数,所以需要将计算结果转换为整数形式。
(4)r = int(rounded_result)
最后,使用 Python 内置的 int() 函数将 mpmath 库中的高精度整数转换为 Python 内置的整数类型,方便后续代码使用。
明白了上述内容再看代码就明白了,直接运行就能得到结果**“bugku{01a25ea3fd6349c6e635a1d0196e75fb}”**
提交成功~
27. RSSSSSA
看描述我还激动了一下,简单的RSA,还非常简单,等我打开附件,傻眼了
文档里的内容大概就是e=29,n=[n1,n2,n3,…],c=[c1,c2,c3,…],也就是多个(n,c)对。