ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

BMZCTF第一次公开赛MISC(上)

2021-12-26 02:03:02  阅读:220  来源: 互联网

标签:img BMZCTF open MISC jpg 公开赛 snake 128 data


BMZCTF第一次公开赛MISC(上)

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

你猜猜flag

binwalk分析一下

Tavaad.png

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

执行你猜猜flag.exe

TavLdJ.png

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

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

Tax8Fs.png

flagmdb文件里

TaxFdH.png

snake

压缩包需要密码

TazO81.png

注释内容是Ook编码

使用这个网站解密

TdSzzq.png

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

TdprkQ.png

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可以看到一行字

TdlGN9.png

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

snake.jpg使用steghide查找信息

找到了一个key.txt

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

image-20211226001539539

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

使用这个网站

image-20211226002222881

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

image-20211226002446611

上脚本

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()

扫码

image-20211226013428843

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

image-20211226013628375

标签:img,BMZCTF,open,MISC,jpg,公开赛,snake,128,data
来源: https://www.cnblogs.com/murkuo/p/15732133.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有