Bugku CTF 密码学刷题

5 篇文章 1 订阅
5 篇文章 0 订阅

前言

          密码学可以分为古典密码学和现代密码学。古典密码学主要由单表替代、多表替代等加密方法组成,现代密码学则主要包含对称加密、非对称加密、哈希、数字签名等内容。我呢,更偏爱古典密码哈哈哈,趁着课少,赶快刷题,冲鸭!!!

这里自夸一下嗷,我写的wp还是非常详细的,每一题我也都配上了解题思路和超链接,方便大家直接拿到flag,当然了做一题肯定是要拿下它的,理解后积累的知识才是最宝贵的,加油!


一、抄错的字符

题目描述:
在这里插入图片描述额其实这题挺麻烦的,思考了一会,主要是一个个列举他的换算大小写字母及数字,优先级:数字 > 小写字母 > 大写字母,然后将枚举出来的字符进行解密直接上脚本:

//python3
import base64
s = "QWIHBLGZZXJSXZNVBZW="
dic = {'I': '1', 'B': '6', 'S':'5','G': '9','Z':'2'}
res = ''

def check(s):
    f = True
    s = str(s)
    for i in range(len(s)):
        if ((s[i] in list('_+=')) or s[i].isdigit() or s[i].isalpha()):
            continue
        else:
            f = False
            break
    return f


def strcon_decode(s,i):
    global res
    if(i==4):
        ss = ''.join(s)
        sss = base64.b64decode(ss)
        sss = str(sss)[2:-1]
        if check(sss):
            # print(ss+' decode: ' + sss)
            ss = res + sss
            res = ss
            return True
        else:
            return False
    else:
        if s[i] in dic.keys():
            ss = s[i]
            s[i] = dic[s[i]]
            f = strcon_decode(s,i+1)
            s[i] = ss
            if f:
                return True
        s[i] = s[i].lower()
        f = strcon_decode(s,i+1)
        s[i] = s[i].upper()
        if f:
            return f
        return strcon_decode(s,i+1)
        
        
for i in range((len(s)//4)):
    ss = s[i*4:(i+1)*4]
#     print(ss+' decode: ')
    ss = list(ss)
    strcon_decode(ss,0)

print(res)

二、/.-

在这里插入图片描述一看就是莫斯密码嘛
直接解密
在这里插入图片描述flag虽然出来了,但是需要调整一下,把前后的%u7b分别换成 “{” “}” 然后剩下的大写字母换成小写字母即可。

三、聪明的小羊

在这里插入图片描述
描述里已经讲了,栅栏,这题可以叫做一眼就解密!哈哈
栅栏密码在线加密解密
在这里插入图片描述

四、ok

在这里插入图片描述同样的,Ook,嗷,这题也是一眼就解密
在线解密,把txt文件的密文复制进去,然后Ook! to Text即可
https://tool.bugku.com/brainfuck/
在这里插入图片描述

五、[±<>]

在这里插入图片描述同上一题,一眼就解密嗷!
在线解密,把给的题目描述复制进去,然后Brainfuck to Text即可
https://tool.bugku.com/brainfuck/
在这里插入图片描述

六、把猪困在猪圈里

在这里插入图片描述

下载题目,得到一个txt文件,一堆乱码???以我多次做题的题感,应该是base64转图片!

在这里插入图片描述好嘞,得到了猪圈密码!
直接对照猪圈密码的解码图解密了
在这里插入图片描述
在这里插入图片描述
一个个对照过去就是flag了!记得加flag格式哦☺

七、你喜欢下棋吗

在这里插入图片描述
比起前面几题,这题的难度上升了不少嗷
首先打开下载的文件,一个txt文件和一个加密的txt文件,我一步步做下去,跟着提示走。

你喜欢下棋吗?
解压密码为小写
4423244324433534315412244543

提示1:下棋,是不是棋盘密码呢
提示2:看眼密文都是数字且都是1到5
ok,应该是棋盘密码了

在这里插入图片描述根据棋盘密码的加密算法我们可以得到密文
除了手动解密也有在线解密网站呀
thisispolybius
敲击码在线解密
在这里插入图片描述
ok,这解出来的密文就是加密txt文件的密码了
然后我们打开这个txt文件
在这里插入图片描述
根据提示,他说是一种5bit的编码
这个我也不知道,哈哈哈,看了wp后才知道这个是 博多码 ,这个也是有在线解密网站的
博多码解码网址

在这里插入图片描述拿到了flag了,转成小写即可。

八、小山丘的秘密

在这里插入图片描述下载文件后给了一个txt文件和一张图片
先看描述,hill有什么秘密呢
这里的hill就是希尔(hill)密码,直接在线解密吧 希尔密码

flag.txt 中给出A=1,一般的希尔密码是A=0,B=1, C=2 …所以字母表需要修改,现在的字母表为Z=0 , A=1 , B=2…
所以把z放在第一位
在这里插入图片描述

希尔密码还需要密钥,密钥肯定就在图片中,图片看上去4和9的位置看上去像是缺了棋子,那么将它看作0,那么此处位置为 z ,其他位置如图所示,得到密钥
在这里插入图片描述
得到密钥啦!
然后参数都拿到手了,就解密啦!
在这里插入图片描述

九、EN-气泡

在这里插入图片描述下载得到一个txt文件
在这里插入图片描述

这题刚看到我也不知道是啥加密,后来听了师傅说的是一种BubbleBubble加密算法,直接在线解密就好了。
一共是三次加密!!!
BubbleBubble加密算法
第三次即可拿到flag
在这里插入图片描述

脚本也有呀:

//python3
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))

套娃三次即可拿到flag

十、你以为是md5吗

在这里插入图片描述下载文件得到一个txt文件

bci177a7a9c7udf69c248647b4dfc6fd84o

根据提示,那就查一下md5的构成嗷
在这里插入图片描述
en…那就根据这个把给的密文删改一下
得到bc177a7a9c7df69c248647b4dfc6fd84
然后直接md5解密一下
在这里插入图片描述
66666666哈哈哈哈
这个就是flag了吧,有趣!

十一、Math&English

在这里插入图片描述
呕吼,数学与英语
下载文件得到一个txt文件,打开一看竟然是
在这里插入图片描述
我已经算好了,哈哈哈
然后得到一组数字21 33 1 22 3 44 54 5 1 35 54 3 35 41 52 13
然后就没有然后了…好吧我啥也看不出来了
看了眼wp,原来是元音密码,学到了!

元音密码表:
在这里插入图片描述

根据这个我们一 一对照就可以拿到flag了!

十二、easy_crypto

在这里插入图片描述题目说是简单的密码,下载得到一个txt文件
在这里插入图片描述
这个我做过(超大声!)
摩尔斯电码
在这里插入图片描述 flag的%u7b %u7d改成flag的括号即可
确实如题目所说嗷,简单的密码

十三、黄道十二官

在这里插入图片描述这题好麻烦,大佬提示跟黄道十二宫杀手有关,搜索相关信息,需要用到AZdecrypt软件。

在这里插入图片描述先抄录下来吧

%..@*>@?==%88%5
.@%#@@90-7$^=*@
17.(>()1@##-$40
~.*6?#%#8#=75+1
(*@*1%#>;0@5)%?
%*^=)&>=1%.+7&#
8681(+8*@@(.@@@
#*=#$3*#%.#%%.3
.*+7.7+@===+)61

第一部分,第一个字符H,随后再向下移动一格,在向左移动两个,得到第二个字符+,以此类推。
然后用脚本来搞吧

//python
_sec = ""
with open(r"黄道十二宫杀手密码Zodiac Killer.txt", "r") as f:
    _sec = f.read()
 
assert len(_sec) > 0
 
_sec_lines = _sec.split("\n")
_line_num = len(_sec_lines)
_line_ch_cnt = len(_sec_lines[0])
_tmp = ""
 
for _i in range(_line_ch_cnt):
    for _j in range(0, _line_num):
        _tmp += _sec_lines[_j][(2 * _j + _i) % _line_ch_cnt]
 
_reformat_ = []
for _i in range(_line_num):
    _reformat_.append(_tmp[_i * _line_ch_cnt:(_i + 1) * _line_ch_cnt])
for _key in _reformat_:
    print("".join(_key))

得到

%%>%;.@3*.#(#0+
@#+.@)8@7@*7@@1
#5&8=.*9@=)#6#7
>0#7%%8$+@-#5?*
13@?7-+(^(*==$$
1*=+#==^4~@)8%=
%=0.*&*.+8*1*1>
@#)8@76%=@%6%..
?#1(%15@(#>%...

扔进AZdecrypt进行解码:
AZdecrypt下载
在这里插入图片描述

Score: 22983.43 IOC: 0.0654 Multiplicity: 0.1925 Seconds: 0.11
Repeats: LETH KILL ILL LL IS (2) AN (2) RE OR AS TH OU TO OP PE
PC-cycles: 136
 
II KILLED A LOT OF PEOPLE THERE ARE ENOUGH 
SLAVES TO WORK FOR I I HOPE YOU CAN DECRYPT 
IT AS SOON AS POSSIBLE THIS IS FLAG ALPHAN 
ANKE OTHERWISE I WILL CONTINUE TO KILLL

然后去FLAG后的单词就是flag了flag{alphananke}小写哦

十四、一段新闻

在这里插入图片描述
下载后得到一个压缩包,是一个txt文件,题目和新颖,看了提示才知道是隐藏字符加密
就是这里鼠标拖动的地方有颜色的这里,是隐藏掉了

在这里插入图片描述
直接上网站,解密

隐藏字符加密

在这里插入图片描述原来是社会主义核心价值观解码啊
社会主义核心价值观编码器
在这里插入图片描述
ok,拿到flag

十五、7+1+0

在这里插入图片描述下载题目得到txt文件,打开后发现短短一行密文

4nXna/V7t2LpdLI44mn0fQ==

看到==我以为是base64,解出来的东西也是无语子
这里省略一大段时间
然后就就就去看了wp
https://blog.csdn.net/qq_52549196/article/details/120708537

然后就偷来了脚本

import base64

miwen = '4nXna/V7t2LpdLI44mn0fQ=='

mingwen = base64.b64decode(miwen)

print(mingwen)

for i in mingwen:
    # print(type(i))
    print(i, end=" ")

print()
j = 1
for i in mingwen:
    # print(type(i))

    if(j % 2 == 1):
        print(chr(i-128), end="")
    else:
        print(chr(i), end="")
    j += 1

拿到flag
在这里插入图片描述

十六、这是个盲兔子,竟然在唱歌!

在这里插入图片描述下载得到一个txt文件
在这里插入图片描述这个应该是盲文吧,看题目提示也是,盲兔子…
直接上网站
盲文解密

在这里插入图片描述然后是兔子解密

在这里插入图片描述
然后题目就没提示了嗷,但是看这个应该是音符解密

在这里插入图片描述okk,拿到了flag。


总结

这次的题目好有意思啊,难度中等,但是趣味性挺高的,还是要继续努力加油冲冲冲!!!
写wp也是再次巩固做过的题目,所以我觉得收货满满,大家也要一起加油呀!
在这里插入图片描述

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值