MISC常规解题步骤(图片)
1.解压zip文件,用winhex打开图片 2.判断文件格式是否篡改,检查png的文件头和文件尾,文件格式正常 PNG文件头(hex):89 50 4e 47 0d 0a 1a 0a PNG文件尾(hex): 00 00 00 00 49 45 4E 44 AE 42 60 82 3.判断否有文件二进制合并,搜索png文件头8950,发现只有一个,未使用二进制合并文件 4.判断是否修改png图片宽高,使用TweakPNG
Misc8
使用winhex打开查看,搜索ctf无果,用binwalk看看
发现里面有两张png图片,使用foremost分离
在默认的outfile文件夹中会存有分离出来的两张照片
其中右边就是正确的flag
Misc9
直接放010editor里面搜ctfshow
Misc10
放到binwalk里看一下
发现里面存在隐藏的压缩文件,其中的10E5文件打开就是flag
Misc11
使用tweakpng打开,长宽正常,但第一个IDAT块小于第二个IDAT块的长度,这意味着在第一个数据块还没铺满时第二个数据块就开始铺了,人为改动的痕迹明显。
正常该有的样子
点击第一个IDAT块,选择delete,然后按f7预览修改之后的图片,得到flag
Misc12
还是使用tweakpng打开,发现这样的情况
IDAT块并没有均匀地逐块铺满,人为改动痕迹明显
按f7键打开图片预览窗口,从第二个开始逐块删除IDAT块,直到出现flag
(删除过程中)
出现flag
Misc13
打开010editor查看图片,在结尾处发现了一串很奇怪的东西,看着像flag又不完全是
仔细观察可以发现在正常的flag格式ctfshow{xxx}基础上给每个字符中间加了一个字符,这里简单写一下脚本得到正确的flag
这里得到的flag是ctfshow{ae6e46c48f739b7eb2d1de6e412f839a}
但是尝试输入之后发现是错误的,之后去找网上正确的解答,发现不应该去解ASCLL码,而是要拿左边的十六进制数去解,每隔一个十六进制数取一个,取左边的蓝色部分
正确脚本:
a="631A74B96685738668AA6F4B77B07B216114655336A5655433346578612534DD38EF66AB35103195381F628237BA6545347C3254647E373A64E465F136FA66F5341E3107321D665438F1333239E9616C7D" r = '' s=bytes.fromhex(a) for i in range(0,len(s),2):r+=chr(s[i]) print(r) #fromhex函数把一串16进制字符,每两位转换成16进制的对象
最后得到的flag是:ctfshow{ae6e3ea48f518b7e42d7de6f412f839a}
Misc14
放到binwalk里看一下,发现里面有隐藏的文件
然后使用dd命令提取出其中的图片(if是输入文件名称,of是输出文件名称,skip是偏移量,就是你要提取的文件的最前面的数字,bs=1)
然后就得到flag
Misc15
用010打开图片,刷的一下就找到了
Misc16
用binwalk查看一下文件,直接分离出来一个文件夹,其中dd4就是flag
Misc17
用binwalk看了一下图片,发现有一个压缩包,但是打不开
这里需要使用zsteg(一个比StegSolve更方便的工具—zsteg_不咸还不鱼的博客-CSDN博客_zsteg安装,可以参考这个)分析,发现有隐藏信息
所以我们先使用zsteg命令把隐藏信息分离出来,再用binwalk提权得到flag
Misc18
题目给的提示,很明显,flag藏在属性里
直接把四个部分合起来就行,这应该算最简单的图片题了
Misc19
联想到图片的exif信息,EXIF是专门为数码相机的照片设定的,可以记录数码照片的属性信息和拍摄数据。主机和文档名都属于exif信息的一部分,这里使用图虫的exif信息查看器,直接将图片导入,找到主机和文档名记录的flag
Misc20
与上一题一样,flag都是藏在EXIF信息中,做法同上,得到flag,只不过需要自己转化一下
数字都是使用中文数字代替,英文字母则是用汉字代替,需要注意一下,别翻错了。
ctfshow{c97964b1aecf06e1d79c21ddad593e42}