ctfshow-萌新题

文章讲述了新手在密码挑战中的经历,涉及栅栏密码、Morse密码、Bacon加密方法,以及使用生日作为密码的隐写和解密过程。解密工具如Cyberchef、ARCHPR和自定义脚本在文中起到关键作用。
摘要由CSDN通过智能技术生成

萌新-密码1 栅栏密码

密文:

53316C6B5A6A42684D3256695A44566A4E47526A4D5459774C5556375A6D49324D32566C4D4449354F4749345A6A526B4F48303D

提交格式:KEY{XXXXXXXXXXXXXX}

工具下载:tools.rar - 蓝奏云

工具里面提供了 栅栏密码加解密工具和16进制编辑器,再看下密码,可以猜测是16进制串

打开16进制编辑器,可以看到是010的汉化版,新建十六进制文件,Ctrl+Shift+v,就可以将密文导入了

 得到密文为:

S1lkZjBhM2ViZDVjNGRjMTYwLUV7ZmI2M2VlMDI5OGI4ZjRkOH0=

看到最后的=号,猜测是base系列加密,先尝试base64,然后得到以下字符串

KYdf0a3ebd5c4dc160-E{fb63ee0298b8f4d8}

然后打开栅栏加解密工具,尝试解密

最终的flag:

KEY{dffb06a33eeeb0d259c84bd8cf146d08-}

参考链接:栅栏密码_百度百科


萌新-密码2 杂项

出题人已累,随便敲了几下键盘。。。 rdcvbg 2qase3 6tghu7

flag格式KEY{XXXXXX}

敲键盘,找附近的字符

rdcvbg对应的是f,2qase3中间的是w,6tghu7中间的是y

最终的flag:

flag{fwy}

萌新-密码3 莫斯密码

题目名称:我想吃培根

题目描述: -- --- .-. ... . ..--.- .. ... ..--.- -.-. --- --- .-.. ..--.- -... ..- - ..--.- -... .- -.-. --- -. ..--.- .. ... ..--.- -.-. --- --- .-.. . .-. ..--.- -- -- -.. -.. -- -.. -- -.. -- -- -- -.. -.. -.. /-- -.. -- -.. -.. --/ -- -- -- -- -- /-- -.. -.. -- -.. -- /-- -.. -.. --

格式:flag{***********}

hint:

解密工具下载 链接:https://pan.baidu.com/s/10_35gRb3S6eGW-4MLyJRuA 提取码:1a3f

在Cyberchef中From Morse Code解密

得到如下字符串

MORSE_IS_COOL_BUT_BACON_IS_COOLER_MMDDMDMDMMMDDDDMDDMMMMMDDMDMDDM

可以看到提示Bacon加密,了解到Bacon加密只有两个元素A和B,所以先尝试把M替换成A,D替换成B,得到如下字符串

AABBABABAAABBBBABBAAAAABBABABBA

最终的flag:

flag{GWQNDM}

参考链接:培根密码_百度百科

培根密码最大是BBAAB,另外一种替换方式中BBBAA已经超出了密码范围


萌新 隐写2

hint:文件的主人喜欢用生日做密码,而且还是个90后。

这题,首先考虑是不是伪加密,但是看了文件数据区和文件目录区都是0108,应该是真加密

关于伪加密,可以看下这篇文章zip伪加密_zip 伪加密-CSDN博客

但是根据这篇博客,似乎全为奇数也有可能是伪加密,重新尝试了一下,还是不行

解锁了hint,那就用ARCHPR解密一下,ARCHPR6位以上要注册,算了还是自己写脚本吧

# 生成特定的生日字典
def genenrate(start, end):
    for year in range(start, end):
        for mon in range(13): 
            mon = str(mon).zfill(2)
            for day in range(32):  # 这个真不是代码写的不行,可以看下运行结果
                day = str(day).zfill(2)
                print(str(year) + mon + day)
                with open("birth.dic", "a", encoding="utf-8") as fp:
                    fp.write(f"{year}{mon}{day}\n")
            
if __name__ == '__main__':
    start = 1990
    end = 2000

    with open("birth.dic", "w", encoding="utf-8") as fp:
        fp.write("")

    genenrate(start, end)
import zipfile


def extract(file, password):
    path = file[:file.rfind("\\")]
    try:
        with zipfile.ZipFile(file) as zf:
            zf.extractall(path, pwd=password.encode('utf-8'))
            print("文件解密成功,文件已解压。")
            return True
    except Exception as e:
        print(f"解压失败: {e}")


if __name__ == '__main__':
    file = r"自己的flag文件地址"
    dict = r"生成的字典地址"
    with open(dict, "r", encoding="utf-8") as fp:
        lines = fp.readlines()

    # print(lines)
    for line in lines:
        pwd = line.replace("\n", "")
        # pwd = int(line)
        print(pwd)
        if extract(file, pwd):
            break

就是想问问谁家生日是在10月00号的

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值