前言
这道题目主要考的是CTF中的杂项(misc)中的图片信息隐写,和对于一些工具的使用
隐藏信息探索
1.访问服务器的FTP服务,下载图片QR,从图片中获取flag,并将flag提交;
说明:由于二维码发出去违规,所以这题我只讲思路,如果还不懂得话,可以Q+我
从图片中可以看到二维码的定位角位置出现偏移,那么我们就可以通过拼接把二维码的定位符,拼接成正确的位置。
在比赛的时候我们可以使用windows电脑自带的图片编辑工具“图画”
先把图片分割成四个部分
然后再旋转定位角,变成正常的二维码图片拼接成这个这个样子就ok了,然后我们保存,使用工具CQR.exe扫描二维码就行了
flag{xqFcT59a7iQw}
2.访问服务器的FTP服务,下载文件document,从文件中获取flag,并将flag提交;
打开这个word文档,但是并没有发现flag。
我们换16进制编辑器“HxDx64”来看看
发现这文件头不是word文件的格式,而是zip的文件头。
这里我列举一些常见的文件头尾
JPEG (jpg)
文件头:FFD8FF 文件尾:FF D9
PNG (png)
文件头:89504E47 文件尾:AE 42 60 82
GIF (gif)
文件头:47494638 文件尾:00 3B
ZIP Archive (zip)
文件头:504B0304 文件尾:50 4B
TIFF (tif),
文件头:49492A00
Windows Bitmap (bmp)
文件头:424D
CAD (dwg)
文件头:41433130
Adobe Photoshop (psd)
文件头:38425053
Rich Text Format (rtf)
文件头:7B5C727466
那么我们就把文件的后缀修改为zip
解压出来,发现了一堆的xml文件,我们尝试在这里面寻找flag
最后在word这个目录下的document.xml中找到flag
flag{RFCXQ0gy}
3.访问服务器的FTP服务,下载图片beach,从图片中获取flag,并将flag提交;
查看这个图片,并未发现一些有价值的信息
我们尝试把它放到kali里面使用工具binwalk尝试能不能获取到有价值的信息
发现这个图片里面隐藏了一个zip文件
使用命令:binwalk -e 图片
把zip文件分离出来
这个工具分离的时候会自动在当前目录生成一下_beach.jpg.extracted这种格式的文件夹,被分离的文件就在这目录内
尝试解压这个zip文件发现要密码,一开始以为是伪加密,但是使用二进制编辑器查看后,发现并不是伪加密,然后以为是弱口令,写了个脚本来跑,但是也没有跑出来,只能重新查找图片是否含有,有价值的信息了。
最后在字节流中找到了一个base64加密的信息。
对这条字符串进行解密
感觉这个就是密码。
解压成功获取flag
flag{nfzgVNXCxibcjxn1}
4.访问服务器的FTP服务,下载图片grass,从图片中获取flag,并将flag提交;
解法和上题的一样,都是使用binwalk,查看是否存在隐藏文件
这题就是一个伪加密,但是binwalk这个工具,会自动帮我们绕过伪加密
flag{IYS9FWWLY4ACf1o8}
5.访问服务器的FTP服务,下载图片tree,从图片中获取flag,并将flag提交;
这个图片在放入kali中就无法显示,这个很明显的就是图片的宽高被修改了。
我们要利用脚本,把图片的宽高重新计算出来
脚本附上:
#coding:utf-8
import binascii
import struct
crcbp = open("xxx.png","rb").read() #此处填上文件名
for i in range(1024):
for j in range(1024):
data = crcbp[12:16] + struct.pack('>i',i) + struct.pack('>i',j) + crcbp[24:29]
crc32 = binascii.crc32(data) & 0xffffffff
if crc32 == 0xd15b75ae: #此处填上CRC值
print (i,j)
print ("hex",hex(i),hex(j))
通过比对发现高的值,被修改了。
修改后得到flag
flag{SwNgVibDLp}
6.访问服务器的FTP服务,下载压缩文件style,从压缩文件中获取flag,并将flag提交。
解压压缩文件。
把这四张图片放入16进制编辑器中,通过观察文件头和文件尾发现问题,其中前三张图片的文件头为FFD8FF格式是jpg文件,但是它们的末尾却不是jpg文件的FF D9结束的,而是png文件的AE 42 60 82结束的。
其中orchid,chrysanthemum,bamboo这三张图片全是这个样的。
从这里其实就可以判断出来,这三张图片可能还隐藏了一个png格式的图片,那么我们就可以尝试找出来png的文件头。
直接CTRL+F查看“89504E47”png图片的文件头
果然找到了png的文件头,接下来就很简单了,我们直接从png的文件头“89504E47”16进制符到png文件尾,全部复制出来,然后新建一个空白的16进制文件,复制进去然后保存,格式改为png的。
ctrl+n新建一个16进制文件
将刚刚复制的文件保存到里面
这样就获取到了flag的三分之一,还有两份在图片:chrysanthemum,bamboo中,方法都是一样的,我就不一一列举了。