BUUCTF: https://buuoj.cn/challenges


相关阅读 CTF Wiki CTF常见编码及加解密(超全) MRCTF2020 pyFlag

在这里插入图片描述

题目描述:

得到的 flag 请包上 flag{} 提交。 感谢天璇战队供题。

密文:

下载附件,解压得到三张图片:Furan.jpg、Miku.jpg、Setsuna.jpg。(出题人真是个二次元(╯°□°)╯︵ ┻━┻)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


解题思路:

1、先看第一张图片Furan.jpg,用010Editor找到文件末尾的ZIP压缩包数据,根据hint这只是第二部分的数据。

在这里插入图片描述

以此类推,在另外两张图片找到剩下的两部分数据。

在这里插入图片描述

在这里插入图片描述

拼接在一起保存为ZIP文件,解压需要密码。

在这里插入图片描述

2、回去找密码,找了一圈什么都没有。用Ziperello尝试暴力破解,得到密码 1234

在这里插入图片描述

解压压缩包,得到flag.txt和.hint.txt,内容分别如下:

一个是密文:

1
G&eOhGcq(ZG(t2*H8M3dG&wXiGcq(ZG&wXyG(j~tG&eOdGcq+aG(t5oG(j~qG&eIeGcq+aG)6Q<G(j~rG&eOdH9<5qG&eLvG(j~sG&nRdH9<8rG%++qG%__eG&eIeGc+|cG(t5oG(j~sG&eOlH9<8rH8C_qH9<8oG&eOhGc+_bG&eLvH9<8sG&eLgGcz?cG&3|sH8M3cG&eOtG%_?aG(t5oG(j~tG&wXxGcq+aH8V6sH9<8rG&eOhH9<5qG(<E-H8M3eG&wXiGcq(ZG)6Q<G(j~tG&eOtG%+<aG&wagG%__cG&eIeGcq+aG&M9uH8V6cG&eOlH9<8rG(<HrG(j~qG&eLcH9<8sG&wUwGek2)

一个是提示:

1
2
3
我用各种baseXX编码把flag套娃加密了你应该也有看出来
但我只用了一些常用的base编码哦毕竟我的智力水平你也知道...像什么base36base58听都没听过
提示0x10,0x20,0x30,0x55

3、根据hint只使用了Base编码,(提示: 0x10,0x20,0x30,0x55 转为十进制 16 32 48 85 ,似乎是加密顺序,Base16->Base32->Base48->Base85,逆序解密即可。不过好像没有Base48编码啊!!!这是怎么回事?(╯°□°)╯︵ ┻━┻)

Base16特征:大写字母(A-Z)和数字(0-9),不用‘=’补齐。 Base32特征:大写字母(A-Z)和数字(2-7),不满5的倍数,用‘=’补齐。 Base64特征:大小写字母(A-Z,a-z)和数字(0-9)以及特殊字符‘+’,‘/’,不满3的倍数,用‘=’补齐。 Base85特征:特点是奇怪的字符比较多,但是很难出现等号

先解起来再说吧。首先,进行Base85解密,得到:

1
475532444B4E525549453244494E4A57475132544B514A54473432544F4E4A5547515A44474D4A5648415A54414E4257473434544B514A5647595A54514D5A5147553444474D5A5547453355434E5254475A42444B514A57494D3254534D5A5447555A444D4E5256494532444F4E4A57475A41544952425547343254454E534447595A544D524A5447415A55493D3D3D

在这里插入图片描述

接下来进行Base16解密,得到

Base16编码解码

1
GU2DKNRUIE2DINJWGQ2TKQJTG42TONJUGQZDGMJVHAZTANBWG44TKQJVGYZTQMZQGU4DGMZUGE3UCNRTGZBDKQJWIM2TSMZTGUZDMNRVIE2DONJWGZATIRBUG42TENSDGYZTMRJTGAZUI===

在这里插入图片描述

典型的Base32密文特征,进行Base32解密,得到

Base32编码解码

1
54564A4456455A3757544231583046795A5638305833417A636B5A6C593352665A47566A4D47526C636E303D  

在这里插入图片描述

又是Base16,解密得到

1
TVJDVEZ7WTB1X0FyZV80X3AzckZlY3RfZGVjMGRlcn0=

在这里插入图片描述

最后是Base64解密,得到flag: MRCTF{Y0u_Are_4_p3rFect_dec0der}

BASE64加密解密

在这里插入图片描述

官方WriteUP脚本:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#!/usr/bin/env python

import base64
import re

def baseDec(text,type):
    if type == 1:
        return base64.b16decode(text)
    elif type == 2:
        return base64.b32decode(text)
    elif type == 3:
        return base64.b64decode(text)
    elif type == 4:
        return base64.b85decode(text)
    else:
        pass

def detect(text):
    try:
        if re.match("^[0-9A-F=]+$",text.decode()) is not None:
            return 1
    except:
        pass
    
    try:
        if re.match("^[A-Z2-7=]+$",text.decode()) is not None:
            return 2
    except:
        pass

    try:
        if re.match("^[A-Za-z0-9+/=]+$",text.decode()) is not None:
            return 3
    except:
        pass
    
    return 4

def autoDec(text):
    while True:
        if b"MRCTF{" in text:
            print("\n"+text.decode())
            break

        code = detect(text)
        text = baseDec(text,code)

with open("flag.txt",'rb') as f:
    flag = f.read()

autoDec(flag)

flag:

1
flag{Y0u_Are_4_p3rFect_dec0der}