misc43
题目提示
根据提示中的错误想到用pngdebugger来分许发现发现所有IDAT块的crc32值都是错误的
把错误信息存放到txt文档中
结合提示把,错误的crc提取出来,hex转字符串得到flag
这里附上脚本
# coding=utf-8
flag=""
a=[]
f=open("1.txt")
for i in range(83):
s=f.readline()
a.append(s)
if("CRC0" in a[i]):
flag=flag+a[i-1].split("=0x")[1][0:8]
else:
print("*****************")
print(flag)
然后将得到的16进制转字符串得到flag
misc24
用010editor 打开misc24.bmp看到文件真实大小为675056
文件头的长度为54
文件尾部还有window补两位00 00
所以文件的真实大小为675056-54-2=675000
又因为每个像素点由3个字节(十六进制码6位)表示,每个字节负责控制一种颜色,分别为蓝(Blue)、绿(Green)、红(Red),所以文件真实的像素大小为:675000/3=225000
图片宽度是正确的这里求出高度为22500/900=250这里改为250保存后即可得到flag
misc39
一道gif时间间隔隐写题目
主要利用linux下的identify工具来隐写
基本的命令格式:
identify [options] input-fileidentify:命令名称
options:参数
input-file:文件名。
identify -format "%T " misc39.gif > 1.txt
将文本中的37换成1,36换成0然后转字符串就得到flag(这里是七位二进制)
misc 红包第一弹
解压文件发现一堆压缩包,每个压缩包里都有一张不同的图片
解压出一张图片打开在文件末尾发现一串base64
打开其他图片也一样发现不同的base64编码于是想到将所有图片末尾的编码复制拼接出来解密
由于工作量比较大这里用到脚本来提取数据
import os
flag=""
for i in range(1,87):
path=str(i)+".jpg"
num=os.path.getsize(path) #获取文件大小
# print(num)
f=open(path,"rb")
f.seek(int(num)-100) #从文件倒数100个字节开始读取
s=f.read(100)
s=str(s,'utf-8') #将bytes转为str类型
flag=flag+s
print(flag)
然后将输出的数据base64转图片是一个二维码扫码得到flag