开头拿到文件,右键属性查看详细信息查看分辨率
常规做法改高度或者宽度
拿到010editor里查找781和66的十六进制的位置
一般来说会在FF C0周围,但也不一定。直接查分辨率十六进制是比较稳的
781和66的十六进制分别是:30D、42。直接用搜索功能查找 00 42
或者查找 30 D0、03 0D。只要高度和宽度的十六进制数是连在一起的那就找对了
我这里直接尝试把高度66改成150。也就是十六进制的96
返回图片就可以看到隐藏了的信息
我们把能看到的数据提取出来
flag{666c61677B6D795F6E61**65**4**121**7**hhhh}
接下来尝试在编辑工具里,把查找模式从’十六进制字节‘改成‘文本’
尝试搜索01串,发现有大量的二进制码
尝试使用二进制转ascii
获取一串不明所以的文字:mynameiskey!!!hhh
有可能是能用上的密码,乘胜追击查看十六进制数据里还有没有隐藏了的东西
发现7B BC AF 27 1C很像7z文件的十六进制头
7z十六进制文件头:37 7A BC AF 27 1C
我们把文件里的这段数据改成7z头
再在dd里尝试分离出7z文件
一套组合拳
ls
binwalk file.jpg
dd if=file.jpg of=out.7z bs=1 skip=9591 count=17569
提取出来的7z文件发现需要解压密码
这里把:mynameiskey!!!hhh 直接填入解压成功
获得一个新文件:ljc2.jpg
依然是查看该文件的详细信息,分辨率是622 x 62
转化成十六进制就是:26E x 3E
直接进入十六进制编辑软件再次搜索(别忘了把搜索模式换回十六进制字节)
我这里直接搜索02 6E和00 3E直接搜索到了
这里把高度3E直接改成96(也就是十进制的150,这个数字自己随便往大的填)
这里就直接拿到了flag此前被遮掩的一部分
两个部分拼起来就是flag{666C61677B6D795F6E616D655F482121487D}
直接填答案发现不对,所以这里应该还需要解码
使用base16尝试解码
那么答案就是:flag{my_name_H!!H}