BugKu_Crypto_(1)
前言
BugKu平台练习wp
提示:以下是本篇文章正文内容,下面案例可供参考
0X01 抄错的字符
看题目提取有用信息:
(1)部分数字抄成了字母
(2)所有字母都换成大写
所以flag中包含了数字、大小写字母。
先把小明抄下来的话按照四个一组分,结果发现最后一组少了一个字母,这题一个是要解码,少了一个应该有问题,看起来像是base64,最后应该有个=
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密码
又是增长奇奇怪怪知识的一天