目录
题目:
最终的flag应该是一个BUGKU{具体内容}的形式。
一、前言
- 首先花一个金币下载附件,解压后会得到一个名为2.png的图片。
- 刚拿到这张图片的时候,小编也没什么思路,所以第一步直接把图片拖到了隐写工具里---StegSolve,看看能不能直接用工具找到flag。这里这个隐写工具具体的用法小编就不介绍了,因为对于这道题来说,工具不好用😳,所以就不展开说啦!
- 因为工具不好用,所以小编就想去看看大佬们的解题思路。大佬们直接给的思路是用010 Editor打开图片,首先观察一下文件头、尾的字节是否正常,接着就是直接一个修改长宽数据,保存图片后就得到了flag内容。我相信如果同为小白的你看到也会想知道,是什么节点能够让我们能够想到需要去修改图片的长宽来验证是否能得到flag内容或者如何看出图片的长宽值有问题呢(当然多多刷题积累经验也是很重要的啦~)?
话不多说,一起看一下我自己整合的一个解题思路吧~
二、解题过程
1、步骤一
我们得到的是一个png类型的图片,借鉴大佬们的解题思路,首先用010 Editor打开图片,看一下文件的头、尾是否包含可疑的内容(有些题目会把flag直接藏在头、尾中)。
tips:
一个png文件,由一个固定的标识头和三个关键数据块组成,分别为IHDR、IDAT和IEND。
- 文件标识头:89 50 4E 47 0D 0A 1A 0A
- 文件尾:AE 42 60 82
文件头和尾并没有包含什么特殊的内容。
2、步骤二---利用Editor工具修改图片内容
2.1 下载Editor模板
通过图片内容可知,文件的头尾没有什么问题,那么接下来我们可以利用010 Editor 里的png模板看一下,文件的结构是否被破坏。因为如果图片的长、宽或CRC的值被修改了的话,文件结构被破坏,执行时output输出面板会显示报错信息。
tips:在Editor里可以去官网下载对应文件类型的模板
2.2 执行模板
下载好模板后,回到Editor,执行模板。
2.3 观察输出内容
观察输出面板的内容,出现报错信息“Executing template “*ERROR: CRC Mismatch @ chunk[0]; in data: cbd6df8a; expected: c758d77d”.
(ps:复现了大佬博客里的内容,相关链接会附到结尾。)
2.4 分析报错内容,修改图片信息
CRC报错一般有几种情况,一是确实是CRC被故意篡改了;二是图片的高度或宽度被更改了,需要把高度、宽度改回去。图片隐写一般首先会尝试修改图片的高度,所以可以考虑适当把图片改大或者改成跟宽度一样的值,把图片下载下来,看是否能看到flag的内容。
小编总结了两种可以确定图片高度和宽度的值,供大家参考。
1)方法一:
我们行完png模板(2.2步骤)后,除了关注输出面板的报错信息外,还可以看一下Template Result处,点击对应字段,字节处也会自动被标记。可以直接在结果处修改高度的值。
2)方法二:
我们在文章开头提到了png格式图片包含一个图片标识头和三个关键的数据块IHDR,IDAT,IEND。
文件头为89 50 4E 47 0D 0A 1A 0A
49 48 44 52对应IHDR
IHDR后紧接着的八个字节分别对应的是图片的宽和高,其中宽和高各占四个字节,直接在此处修改高的值也可。
2.5 找到答案啦
修改好图片的宽、高值后,另存图片,即可看到flag的值啦!
flag为:BUGKU{a1e5aSA}
小编也借鉴了其他大佬的解题思路,但觉得对安全小白来说并不是特别容易理解。所以把自己认为不好理解的地方做了一点扩展,希望可以帮到像我一样刚入门的安全小白~