计划参加参加第二次公开赛,先做一下第一次公开赛的题试一试
binwalk
分析一下
zip
文件,改后缀后需要密码才能打开
执行你猜猜flag.exe
9个大爷,9个密码,试一下发现压缩包密码是第四个大爷的
加压缩后得到了这几个文件
flag
在mdb
文件里
压缩包需要密码
使用这个网站解密
解压缩后得到三个文件,其中process
是py
文件
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
可以看到一行字上网查一下可以知道sepent
是一种加密方法
对snake.jpg
使用steghide
查找信息
找到了一个key.txt
使用steghide extract -sf snake.jpg
提取出来key.txt
key
使用serpent
算法对data
文件解密使用这个网站
根据我为数不多的经验,这里w
代表的是white
,b
代表的是black
,是个二维码
上脚本
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()
ps:没刷完。。。脚本写了好多次都报错。。。。明天再刷吧