BugKu_Crypto_(1)
时间:2022-09-15 19:30:00
BugKu_Crypto_(1)
文章目录
- BugKu_Crypto_(1)
- 前言
- 0X01 抄错的字符
- 0X02 聪明的小羊
- 0X03 /.-
- 0X04 [ -<>]
- 0X05 ok
前言
BugKu平台练习wp
提示:以下是本文的文本内容,以下案例可供参考
0X01 抄错的字符
提取有用信息:
(1)部分数字抄成字母
(2)所有字母都被大写取代
所以flag它包含数字、大小写字母。
先把小明抄下来,按四个一组分,结果发现最后一组少了一个字母,一个是解码,少了一个应该有问题,好像base最后应该有一个=
QWIH BLGZ ZXJS XZNV BZW
找出上面每组可能写错的字母
I(i)=》1 B(b)=》6 L(l)=》1 G(g)=》9 Z(z)=》2 S(s)=》5
试着解码它们(只列出解码成功)
QWIH base64解码为AB QWIh base64解码为Ab! QW1h base64解码为Ama QwIH base64解码为C
Bl92 base64解码为_v bl92 base64解码为n_v
ZXJS base64解码为erR ZXJ5 base64解码为ery
X2NV base64解码为_cU X2Nv base64解码为_co XzNV base64解码为_3U XzNv base64解码为_3o
bzw= base64解码为o< b2w= base64解码为ol b2W= base64解码为oe
尝试将上述每组的可能组合提交flag总有一个是对的
flag{Aman_very_cool}
QW1h bl92 X2Nv b2w=
这种猜测方法太不稳定了。一旦有可能错过,我就得不到正确的答案。后来,我在网上找到了它,并可以编写代码执行(参考博客:https://blog.csdn.net/jnwlhh/article/details/120096464)
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
)
dic这个字典变化得到最后的结果
例如:
0X02 聪明的小羊
从题目中提取关键信息:
(1)栅栏
(2)2个
那么就可能是一个栅栏密码进行解密,其中的key为2
0X03 /.-
瞅一眼题,摩斯密码没错了
复制描述,解码去
把得到的结果稍微微调一下就是最后的结果了
flag{d3fcbf17f9399504}
0X04 [±<>]
看描述,只有[、+、-、<、>、]这几个组成,应该是brainfuck语言,尝试解密一下
解码网址:www.hiencode.com/brain.html
小知识:
(参考博客:https://blog.csdn.net/nameofcsdn/article/details/110231730)
Brainfuck语言(简称BF)是一种非常接近图灵机的编程语言
BF只有8种有效字符,其实就是8种指令:
BF可以简单的翻译成C/C++语言:
0X05 ok
下载好文件,一打开人麻了,这么多Ook
去查了一下这是Ook编码
解码网址:https://tool.bugku.com/brainfuck/
小知识:
Ook密码中有大量Ook,加上一些符号;Ook! has only three distinct syntax elements:Ook.Ook?Ook!这种就是ook密码
又是增长奇奇怪怪知识的一天