您的位置 首页 CTF

Bugku杂项misc writeup(2)

这几天又给虐了,我又来记录欢乐时光了 题目(Mumumisc&只有黑棋的棋盘&北有楠木) 涉及…

这几天又给虐了,我又来记录欢乐时光了

题目(Mumumisc&只有黑棋的棋盘&北有楠木)

涉及到的网站和工具:

Wbs43open-win32链接: https://pan.baidu.com/s/1g8AbhV1EVDuiZS7PpcFUzw  密码: svhi

音符解码网址: https://www.qqxiuzi.cn/bianma/wenbenjiami.php?s=yinyue

1.mumumisc

提示:

连续加了两天班又经历了2021.3.14 AWD线上赛的后MuMuMisc内心黑化程度到达了100%,他决定出一个套娃题目来与大家进行较♂量。
MuMuMisc先是构造了一串flag,然后在他的外国网友霍夫曼的指导下进行了最原始的编码加密,最后层层套娃将其藏进了一张图片里。
霍夫曼在完成工♂作后靠在树上与MuMuMisc进行了视频对话,他说MuMuMisc出的题目也就有他指导的那一层还有点意思,但整体还是简单得不能看。钥匙都给你了,聪明的你最后一定能够得到flag。
##
感谢套神mumuzi发现的题目的一点小瑕疵,mumuzi yyds orz。

—————————————-

先用winhex打开private.key

FFD8文件头,说明是jpg文件,将其后缀改为jpg

打开发现是一张 哈夫曼树的图片

(这里感谢下volcano师傅的指导)

本来我以为是二叉树,结果它更高级,是哈夫曼树

关于哈夫曼树其原理和构造方法可参考blog:https://blog.csdn.net/qq_29519041/article/details/81428934

先从最上面的圆圈看,向左的枝干为0,向右的为1,依次写出每个字母所代表的二进制

如    字母”l”代表00000    字母”i”代表0001

我写出了各个字母代表的二进制

有了二进制的编码,还需要一段二进制的字符串进行解码,这个时候看文件mumumisc.png

(这里用Stegsolve分析不出来)

这张图左侧有一串黑白相间的字符串(不是什么神奇的加密方式),黑的代表数字0,白的代表数字1

写脚本跑一下

from PIL import Image
import binascii
import base64

def decode(path):
    image = Image.open(path)
    flag = ''
    for x in range(5):
        for y in range(400):
            p = image.getpixel((x,y))
            if p == (0, 0, 0):
                flag += '1'
            elif p == (255, 255, 255):
                flag += '0'
    #2进制转16进制
    a=(hex(int(flag,2))[2:])
    #16进制转字符串
    b=(binascii.unhexlify(a))
    #base64解码
    print("结果如下:\n"+str(base64.b64decode(b)))

if __name__=="__main__":
    path=str(input("请输入mumumisc的路径\n>>>"))
    decode(path)

这里用win10自带的画图3D看一下白条的高宽大概在5px,400px的位置

所以x,y取在5和400

最后跑出来的是一个2进制的字符串(注意这个时候还不是flag)先将其转换为16进制再转为字符串

字符串是一段base64加密的,解出来的结果为

“110001 00000 010 0110 11001 101 0111 101 0111 101 0001 001 110000 100 0001 001 100 0110 1111 1111 1101 100 010 11101 1101 100 00001 010 11101 1101 001 1111 101 111001 111000”

对应之前写的字母和二进制对应关系的表(我是一个个看的,有能力的师傅可以写个脚本跑),最后的结果为:

flag{mumumisc**********nd_handsome}

二进制01真是无处不在啊。

2.只有黑棋的棋盘

Mumuzi(套套子)的题,好耶(精神错乱)

文件如下:

Flag要密码,先用winhex看看棋盘

一手搜索PK,反手改后缀为zip

欸嘿嘿嘿

谢谢,血压已经上来了

再用winhex看一看

原来是头写错了,把0506改成0304

正常打开

这串字符与棋盘的长度一一对应,说明跟棋盘上的棋子正好对应字母

省略号的意思是要继续往上写,看棋盘的棋子,要往上写十行

遇事不决,写个python

a="ABCDEFGHIJKLMNOPQRSTUVWXYZAB"
f=open('Your path','w')
for i in range(1,11):
    print(a[10-int(i):29-int(i)])
    f.write(a[10-int(i):29-int(i)]+"\n")
f.close()

最后从下往上一行行对

压缩包密码为:GOODGOPLAY

解出来是一张图片

用winhex改高度就有flag了

先搜240hex值

改高点就可以看到内容了

mumuzi,棋盘的神!

3.北有楠木

文件如下:

先用winhex看看

PK头,改压缩包看看

出问题了,再看看winhex

翻到结尾处,发现来了个7z,把7z改为PK就可以打开了

把他们都改成504B

文件如下:

先看hint.txt

Base64解一下

再看Key.png

甲骨文数字

密码为14582978

压缩包文件如下:

这是bmp隐写,用wbs43open-win32打开

(密码为无)

写入jpg文件

Winhex找一下跟密码(key)相关的文本

压缩包密码为:988%^&*cool

解压出以下文件:

这是aes256加密,用openssl解一下

密码为99633

解出来的内容为

∮♩§∮♫♯∮♪♬∮♪∮∮♫♯∮♫‖∮♩‖∮♪♩∮♫♬∮♫♬∮¶♬∮♫♬∮♭§∮¶♬∮♩§∮♪♩∮¶§∮♫♯∮♫§∮♪♯∮¶♭♪‖∮∮∮¶∮¶♬§¶♬∮♪♭∮♪♫∮¶♬∮♭♯∮♪♭∮♫§∮♪♩∮♫¶∮♪♩∮♫♬♪‖♪§¶♯∮♪♭∮♪♬∮♩∮§==

♬§¶♪¶♪¶♯♯=

此为音符密码

第二行的密文不需要密码即可解密,且为第一行密文的密码

拿下

本文来自网络,不代表F12sec立场,转载请注明出处:http://www.0dayhack.net/index.php/2195/
头像

作者: Anyyy

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

CAPTCHAis initialing...
联系我们

联系我们

QQ群:884338047

在线咨询: QQ交谈

邮箱: 2676666667@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部