Mysterious-GIF --- 攻防世界WP
作者:互联网
题目描述:
附件:
ps:我重命名了一下为 cindy,gif
解题过程
1.分析该GIF
(1)查看图片属性
(2)strings命令查找字符串
(3)winhex查看
(4)因为是GIF,所以可使用 Stegsolve 查看每一帧
(5)binwak 、 foremos分析
(6)zsteg、exiftool等一些命令的查看
以上只是一些我所了解的常规思路,可在后续图片等隐写题参考,也欢迎交流~
回归正题,使用strings分析一下:
能看到一些断断续续的类似16进制的字符,这里可以使用 identify 命令可以将这些16进制的字符全部提取出来
进行16进制转字符串(在线16进制转文本)
得到类似base的文本,但解码失败,查阅后是 rsa密钥文件内容。只是缺少了开头和结尾的标识部分。后面说明。
再使用到binwalk进行分析:
能看到 ZIP 的字样,于是进行分离
得到一个压缩包
2.分析压缩包文件
能得到许多以 .enc结尾的文件,这里查阅之后大概就是使用之前得到的类似密钥的文本来解密这些文件,使用openssl库来解密这些 .enc结尾的文件,先把这些文件提取出来,以一个来解密尝试,但直接解会提示错误信息
关于openssl中RSA解密的简单命令说明可参考(openssl中的RSA使用)
将这两个标识添加到文本中即可。
-----BEGIN RSA PRIVATE KEY----- -----END RSA PRIVATE KEY-----
这样就成功得到一个jpg格式的图片了,于是将所有的文件都进行解密即可。
3.解密文件
ps:(1)这里就使用shell脚本来批量处理了,因为我们会解出来很多图片,我们最终需要将文件内容都合并到一张图片去。
(2)我这里因为是再windows的bash子系统中进行操作的,界面看着可能不太舒服,而且解密完的文件名排序出来不是顺序的,在最终合并出来的图片显示无法打开,所以用了个比较麻烦的操作对图片进行了命名:::用数组存储了文件命名,共268个文件,用seq生成的等宽度字符000-268进行命名,这样最后在Linux下看到的文件就是顺序排列的。
脚本如下:#!/bin/bash
#原始加密文件目录位置 src_dir='extracted' #解密后存放目录位置 dst_dir='flag' #解压后目录下的文件 files=$(ls $src_dir) #nums数组存储了000-268等宽的数字用于命名 i=0 nums=() for j in $(seq -w 268);do nums[$i]=$j ((i++)) done n=0 for file in $files;do openssl rsautl -decrypt -inkey ./test.key -in $src_dir/$file -out $dst_dir/${nums[$n]} ((n++)) done
#合并图片
cat flag/* > target.jpg
最终提交 : FelicityIsFun 即可。
ps:在最后合并那里花了好久时间,我果然太菜了~~呜呜呜,尽量写详细的WP,让大家看懂,欢迎大家评论交流~~
标签:文件,解密,---,GIF,-----,WP,268,dir,图片 来源: https://www.cnblogs.com/stickonit/p/16424652.html