BMZCTF第一次公开赛MISC(上)

BMZCTF第一次公开赛MISC(上)

计划参加参加第二次公开赛,先做一下第一次公开赛的题试一试

你猜猜flag

binwalk分析一下

BMZCTF第一次公开赛MISC(上)

zip文件,改后缀后需要密码才能打开

执行你猜猜flag.exe

BMZCTF第一次公开赛MISC(上)

9个大爷,9个密码,试一下发现压缩包密码是第四个大爷的

加压缩后得到了这几个文件

BMZCTF第一次公开赛MISC(上)

flagmdb文件里

BMZCTF第一次公开赛MISC(上)

snake

压缩包需要密码

BMZCTF第一次公开赛MISC(上)

注释内容是Ook编码

使用这个网站解密

BMZCTF第一次公开赛MISC(上)

解压缩后得到三个文件,其中processpy文件

BMZCTF第一次公开赛MISC(上)

process加密过程,将snake.jpg通过process.py处理为data.jpg

根据关键加密函数写解密程序

加密函数

def data_encode(bytedata):
    data = int.from_bytes(bytedata,byteorder='big')
    if (data % 2 == 0):
        data = (data + 1) ^ 128
    else:
        data = (data - 1) ^ 128
    data = bytes([data])
    return data

解密脚本

def decode(data,snake): 
    for i in data.read():              
        if (i%2 == 0):
            i = (i +1)^128
        else:
            i = (i - 1)^128
        i = bytes([i])
        snake.write(i)
data = open('data.jpg','rb')
snake = open('snake.jpg','wb+')
decode(data,snake)

我写的这个脚本和网上的其他wp的脚本不太一样,有一点bug。。。

就是图片下部分会有一点噪声

可以参考一下另一个wp

with open('snake.jpg','wb') as snake:
    with open('data.jpg','rb') as data:
        for i in data.read():
            if (i%2 == 0):
                i = (i +1)^128
            else:
               i = (i - 1)^128
            i = bytes([i])
            snake.write(i)

参考:https://www.pythonheidong.com/blog/article/727068/c0cc8687c70f894b8a25/

使用stegsolve可以看到一行字

BMZCTF第一次公开赛MISC(上)

上网查一下可以知道sepent是一种加密方法

snake.jpg使用steghide查找信息

找到了一个key.txt

使用steghide extract -sf snake.jpg提取出来key.txt

BMZCTF第一次公开赛MISC(上)

根据key使用serpent算法对data文件解密

使用这个网站

BMZCTF第一次公开赛MISC(上)

根据我为数不多的经验,这里w代表的是whiteb代表的是black,是个二维码

BMZCTF第一次公开赛MISC(上)

上脚本

import PIL
from PIL import Image

width = height = 200
img = Image.new("RGB", (width, height))
i = 0
file = open('odt.dat', 'rb')
char = str(file.read())
for w in range(width):
	for h in range(height):
		if (char[i]=='w'):
			img.putpixel([w,h],(255,255,255))
		else:
			img.putpixel([w,h],(0, 0, 0))
		i = i + 1
img.save('flag.png')
file.close()

扫码

BMZCTF第一次公开赛MISC(上)

ps:没刷完。。。脚本写了好多次都报错。。。。明天再刷吧

BMZCTF第一次公开赛MISC(上)

上一篇:17.2 用 Pillow 操作图像


下一篇:Java中JDBC的使用