赞
踩
直接看图
查看文件头,发现是png文件,将后缀改为png直接打开就是flag
下载Honeyview直接打开bmp文件
查看文件头,发现依次是.png、.jpg、.bmp、.gif、.tif、.riff,flag文件,刚好是每张图组合起来
直接用打开010打开搜索flag相关信息得到flag
binwalk分析图片结构——>分离出含有隐藏的图片
直接用打开010打开搜索flag相关信息得到flag
binwalk分析图片结构——>分离出含有隐藏的zlip信息
提示
:flag在另一张图里。
这个图有两个IDAT块,而且没有隐写其他的数据,试着把第一个IDAT块的数据删除,然后另存为一张新图片,这个过程可以手动操作,也可以使用tweakpng工具。
提示
:flag在另一张图里。
和上题一样的提示,所以思路是一样的。不过这题有30个IDAT块,用PNGDebugger跑了一下,发现没有出错的IDAT块…
需要删掉前8个IDAT块,用tweakpng工具更方便
一个关键的提示:这个图片的IDEN块不是0,是有数据的,查看数据得知:
那0DE1的这个位置的flag不就是正确的flag了吗
隔一个16进制数取一个
脚本:
a="631A74B96685738668AA6F4B77B07B216114655336A5655433346578612534DD38EF66AB35103195381F628237BA6545347C3254647E373A64E465F136FA66F5341E3107321D665438F1333239E9616C7D"
r = ''
s=bytes.fromhex(a)
for i in range(0,len(s),2):
r+=chr(s[i])
print(r)
#fromhex函数把一串16进制字符,每两位转换成16进制的对象
binwalk分析图片结构,-e解不出来,直接用dd命令分离出文件:
直接用打开010打开搜索flag相关信息得到flag
binwalk分析图片结构——>分离出含有隐藏的LZMA信息,直接可以打开就是flag
binwalk分析得出有一个bzip,但是什么都分离不出来
用zsteg试试,发现有额外隐藏的数据
steg -E “extradata:0” misc17.png > 1.txt 把隐藏的数据分离到1.txt
用binwalk分离1.txt得到flag
用 exiftool 查看图片的具体信息,有的点开属性也可以
misc21:
提示
:flag在序号里。
序号ASCII码转成字符:hex(X&Ys)
所以flag是信息中X和Y一段一段转成16进制再组合起来:
misc22:缩略图隐写
exiftool -ThumbnailImage -b misc22.jpg > 1.jpg //缩略图隐写
misc23:时间中的+08:00指的是时间要加8个小时,改成东八区时间
F001是突破点,这个位置有大量F001,看起来组成了某种形状,010打开图片,搜索F001,全部高亮!形状就是flag
用tweakpng打开发现CRC校验错误,说明要改宽高了
修改png,jpg,gif,bmp四种图片文件的宽高
png: 前四位是宽,后四位是高
jpg: 前两位是高,后两位是宽
bmp:前四位是宽,后四位是高,但是是倒着写
03 B6———>写成B6 03
先打开属性,确定目前宽高数据,再转换成十六进制在010中找,就很容易找到
misc29:GIF有很多帧,将每一帧的高度都改高后,用Stegsolve查看,在第八帧即可发现flag
用Stegsolve查看,flag在8、14、21、31、34帧中,拼接起来即可
用APNG Disassembler来把每一帧分离出来,9、17、36、40帧中藏有flag
不同帧之间的间隔时间来隐写
提取命令:identify -format "%T " misc39.gif > 1.txt,得到的一串36和37
36换成0,37换成1,得到一串01
由于无法整除8,就7个一组
apng文件,使用工具APNG Disassembler,flag在记录详细信息的txt文件中,用脚本把flag提取出来
flag=""
for i in range(28,69): #flag内容从28位开始
f = open('apngframe'+str(i)+'.txt')
s = f.read()
flag += chr(int(s.split("/")[0][6:]))
print(flag)
用tweakpng打开图片,发现IDAT块的长度很可疑,有一部分IDAT块的长度ACILL转换为字符是ctfshow,将后面的接着转换成字符即可得到flag
用tweakpng打开分析一下图片,发现报了一堆错,使用pngdebugger分析,发现所有IDAT块的crc32值都是错误的
将错误的IDAT块的crc-code提取出来,拼接起来转字符串即可得到flag
用PNGDebugger打开,把信息导入到txt文件中
利用脚本把CRC OK的替换成1,CRC FAILED替换成0
转成.bmp格式后,用binwalk提取即可,考察点是png和bmp像素点的读取方式(?)
提取出GIF的详细信息
identify misc46.gif > message.txt
观察得到的信息,其中0+0、174+49、196+47这些是偏移量,用其来进行画图
坐标提取:
f = open(r"C:\Users\95235\Downloads\misc46\message.txt","r")
x = f.readlines()
f.close()
f = open(r"C:\Users\95235\Downloads\misc46\out.txt","w")
for i in x:
f.write(i.split("+")[1])
f.write(" ")
f.write(i.split("+")[2][:2])
f.write("\n")
f.close()
用010打开,发现提示统计FF的数量再减去1、ctfshow{}中包含32个字符
因为flag长度是32位,所以只需要统计前32个段
0 12 11 0 7 10 13 13 9 0 9 13 0 13 6 0 10 9 2 1 0 1 10 8 11 5 12 7 2 2 3 10
再分别转换成hex
s = [0,12,11,0,7,10,13,13,9,0,9,13,0,13,6,0,10,9,2,1,0,1,10,8,11,5,12,7,2,2,3,10]
f = '0123456789abcdef'
flag = 'ctfshow{'
for i in range(len(s)):
flag += f[s[i]]
flag += '}'
print(flag)
把FFE后面的那个字符提取出来,再连接在一起,一共32位(),这就是flag
直接Stegsolve查看颜色通道
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。