下载得到一张gif图片:
直接看不出来什么东西,先分离下去看看:
分解出一个压缩包,最终解压套的一层压缩后得到一个后缀为enc的文件
看着后面识别成流量包文件,但是拖进010Editor中发现这不是。后来查了下这个是密码加密后的东西,做过密码题的应该知道。
然后又分离了下那个temp的压缩包,又发现了很多东西,对于文件还是都要分离下看看有无东西。
里面的东西后缀都是enc。
然后图片的010Editor中发现有间断的16进制字符串。
复制一段出来后解码:
然后是手动提取出来拼凑:
先16进制转完
再转Base64后发现是乱码,应该不需要再转Base64了。
看了wp才知道这是RSA的密钥,只是没有了头尾,不过前面的enc后缀的文件应该能联想到,还是忘了。
-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----
其实提取图片中的16进制可以不用手动提取,这里又了解了一个Linux下ImageMagick图像转换工具(局限性是只能针对图像文件的格式和特性)
基本的命令格式:
identify [options] input-file
identify:命令名称
options:参数
input-file:文件名
这里的命令是:
identify -format "%c" A.gif >result.txt
这里的%c应该是很常用的,换了%x和别的匹配一行。
得出来的数据:
对于上面分离出来的好多压缩包,开始是准备用Linux下的命令进行解压,但是由于压缩包的内容都一样,但拖到windows上发现里面是不一样的。后来问了问,也没搞清,不过在师傅的提示下,更新了下binwalk,然后最新版本的binwalk分离出来的压缩包会自动解压。
然后把密钥保存进key的文件,进行解密试下:
openssl rsautl -decrypt -inkey key -in partaa.enc -out aa1
然后就保了如下的错误:
谷歌一番后发现是密钥保存后的文件编码格式为:UTF-8-BOM
然后把编码修改成UTF-8就好了。
发现解密完后的是jpg,应该是解密拿所有的,最后拼成个图。
开始试着用Linux下的东西来解决,发现总是出错,最后找到一个师傅的python脚本:
import os
import Crypto.PublicKey.RSA
import Crypto.Cipher.PKCS1_v1_5
path = "D:\download\_temp.zip.extracted"
# 读取所有文件
file = [name for name in os.listdir(path)]
flag = b''
# 载入私钥
cipher = Crypto.Cipher.PKCS1_v1_5.new(Crypto.PublicKey.RSA.importKey(open('D:\Download\key.txt','rb').read()))
for f in file:
message = open(os.path.join(path,f),'rb').read()
flag += cipher.decrypt(message,b'rsa')
open(r'D:\Download\flag.jpg','wb').write(flag)
最后: