拿到这个文件,发现文件类型为pdf,这种题目一般怀疑文件类型,拿到kali里面,使用命令:
file cat.pdf
得到:
你就能发现这个pdf文件其实是png图片
发现除了图片没有什么其他的信息,考虑图片里面还隐藏了部分信息
在使用命令:xxd cat.pdf后 得到
这个命令是用十六进制的形式查看文件的内容,很明显在尾部发现了一串可疑的base64编码,解码后得到:
发现这里只有部分flag,说明里面还有藏着另外的部分flag,仔细看十六进制的文件内容,发现里面还有两个文件一个是cat.txt,一个是cat.png,很凑巧这两个文件在末尾就有。
使用命令将这两个文件分离出来:binwalk -e cat.pdf --run-as=root
分离出来后,打开发现是需要密码的,但是题目并没有给出提示的爆破手段,考虑伪加密
这里怎么看文件是真加密还是伪加密?伪加密一般就是通过看压缩源数据区和目录区,压缩源文件数据区:文件头50 4B 03 04后的偏移6,7 字节和压缩源文件目录区:目录头50 4B 01 02后的偏移8,9字节,这两个地方的同为偶数未加密,同为奇数真加密,一奇数一偶数,表示为伪加密。
按照这个的话,源文件数据区虽然是奇数01 00 但是源文件目录区确实 08 00,奇数和偶数,所以为伪加密。当然也可以使用其他方法,比如:unzip 文件名或者 7z x 文件名,如果是真加密的话需要密码才能解密,伪加密能直接解密或者输入错误密码都能解密,不过可能是因为伪加密破坏了数据结构或者文件本身损坏,解密出来的文件是空的。不过只是为了验证是不是伪加密的目的是能达到的。
知道是伪加密,这里我们使用ZipCracker这个工具,也可以使用python脚本,这里我使用的是工具
按照提示找到目录,拿到修复后的文件,最终拿到前半截的flag信息,
base64解码后得到准确的flag,最后拼接成完整的flag,提交完成题目
这里使用 ZipCracker工具是因为我下载到kali里面是一个目录,所以需要在这个目录里面去执行脚本。