以一道题了解LSB隐写:
·什么是LSB?
LSB 全称 Least Significant Bit 即最低有效位。
·LSB隐写的原理?
图片中的像素一般是由三种颜色组成,即三原色。每个颜色的大小都有8bit,LSB就是利用修改颜色中最低的1bit位,在人眼看来隐写后的图片是没有任何区别的,同时隐藏了关键信息在图片中,这就是我们常说的LSB隐写。
如下图所示:
·LSB隐写的优点?
*容量大、嵌入速度快、对载体图像质量影响较小。
*在PNG和BMP上可以实现。
实战:题源Buuctf-Misc (FLAG)
下载附件,得到一张格式为PNG的图片
如图所示
*查看属性,没有什么有用的信息
*把它丢到010editor里试试,同样没有找到有用信息
考虑可能是图片隐写,用binwalk查看下:
果然发现了一些端倪
,有疑似压缩文件,binwalk分离不出来
丢到stegsolve里试试看
在red green blue 0通道中发现了LSB的痕迹(图片发不出来)
接着,我们在Analyse中选择Data Extract选项
*勾选LSB
First复选框
*勾选Red、Green、Blue 中的0复选框
之后点击preview查看数据
(开头ascii码部分有以pk..的数据,一般来说是zip文件,也有可能是word文件)
之后点击SaveBin
使用Bandizip查看刚刚生成的文件,提示文件已损坏
那我们就尝试Bandzip中自带的压缩软件修复工具修复一下,
成功修复
使用文本文件txt格式打开文件,可以看到是一串乱码,但我们找到了我们想要的东西
hctf{dd0gf4c3tok3yb0ard4g41n~~~}
至此,题目解答完毕
以一道题了解频域盲水印:
一些知识点:
·傅里叶变换(Fourier Transform)
傅里叶变换源自对傅里叶级数的研究。在对傅里叶级数的研究中,复杂的周期函数可以用一系列简单的正弦波之和表示。将信号函数进行傅里叶变换,可以分离出其中各频率的正弦波,不同成分频率在频域中以峰值形式表示,就可以得到其频谱。
总之,它是用来将时域或空域中表示的信号转换到频域的工具
·空间域(spatial domain)
也叫空域,即所说的像素域,在空域的处理就是在像素级的处理,如在像素级的图像叠加。通过傅立叶变换后,得到的是图像的频谱。表示图像的能量梯度。
·频率域(frequency domain)
任何一个波形都可以分解成多个正弦波之和。每个正弦波都有自己的频率和振幅。所以任意一个波形信号有自己的频率和振幅的集合。频率域就是空间域经过傅立叶变换的信号
·时域(时间域)
自变量是时间,即横轴是时间,纵轴是信号的变化。其动态信号x(t)是描述信号在不同时刻取值的函数。
·频域(频率域)
自变量是频率,即横轴是频率,纵轴是该频率信号的幅度,也就是通常说的频谱图。频谱图描述了信号的频率结构及频率与该频率信号幅度的关系。
·频域盲水印如何实现?
1.我们先将要添加的水印的图片进行傅里叶变换,得到图片的频域图像。
2.将水印编码后分布到各频率,与原图的频域进行叠加
3.将叠加水印的频谱进行傅里叶逆变换,得到添加了盲水印的图片
·如何提取盲水印?
将原图和带水印的图在频域中相减,根据原来的水印编码方式进行解码,从而提取盲水印
·频域盲水印的优点:
提取效果较好:频域盲水印提取可以在较低的嵌入强度下实现高水印提取率和低误提取率
抗干扰能力强:频域盲水印提取对于一些常见的图像处理操作,如压缩、裁剪和旋转等,具有较强的抗干扰能力。
·频域盲水印的缺点:
对图像或视频的要求较高:如果图像或视频受到严重的噪声、失真或压缩等影响,可能导致水印提取效果较差。
水印容量有限:频域盲水印提取的水印容量有限,嵌入的水印信息量较小。
实战:题源ctfshow-_新手必刷_菜狗杯-You and me
打开题目附件可得两张相似图片,使用频域盲水印提取工具BlindWaterMark (python3)进行水印的提取
提取结果如图所示:
得到flag(虽然有点难看,但是多尝试一下就对了)
至此解题完毕
以一道题了解图片异或
·异或是什么
逻辑异或运算法则为:如果a、b两个值不相同,则异或结果为1;
如果a、b两个值相同,异或结果为0。
图像的异或运算是指两张图像(灰度图像或彩色图像均可)的每个像素值进行“异或”操作,从而实现图像裁剪。
实战:题源ctfshow_新手必刷_菜狗杯_你会异或么
打开题目附件中的压缩包可得一张无法正常打开的PNG图片
根据题目提示,尝试用010editor对图片进行异或操作
打开修改后的文件,可以得到flag
ctfshow{030d0f5073ab4681d30866d1fdf10ab1}
以一道题加深对图片隐写的理解
实战:题源ctfshow_新手必刷_菜狗杯-flag一分为二
题目附件是一张PNG图片,打开图片发现图片高度可能被修改了
往宽高修复工具一丢,修复后打开可以得到第二部分的flag
SecondP@rTMikumiku~}
现在的任务是找到第一部分的flag
尝试将图片丢到binwalk里进行解包
发现图片里肯定还隐写了其他内容
尝试一下盲水印解密
FFT(快速傅里叶变换)
原理:
“将信号或图像转换到不同的域中,在变换域中,可以通过修改变换系数的值来嵌入秘密信息”
得到了第一部分的flag:ctfshow{FirstP@RT
至此,解题结束。
以一道题开启图片隐写新思路:zsteg工具的使用
实战:题源buuctf-misc-镜子里面的世界
打开题目附件,里面是一个PNG格式的文件
在kali下使用zsteg命令查看图片数据隐写
发现了一个’secret key‘,猜测这就是flag
提交正确
至此解题结束。
以一道题了解zip格式压缩文件的伪加密
·什么是伪加密:
伪加密,顾名思义就是没有加密,但是用户实际打开压缩包,压缩软件会提示输入密码
·原理?
Zip类型文件中的每个文件都有一个对应的文件头,文件头包含了文件的元信息,其中也包括了一个用于表示文件是否加密的标志位
·如何识别/实现zip文件伪加密?
简单来说,只需要看两个地方
第一个是压缩源文件数据的全局方式位标记
第二个是压缩源文件目录区的全局方式位标记
通常全局方式位标记为2bytes长度,
全局方式位中第一个字节的数据为偶数表示无加密,反之为奇数则表示加密
与第二个字节的数据无关
一般来说,这两个全局方式位中第一个字节的数据,如果有一个为偶数,一个为奇数,那么就可以判断,该文件为伪加密。(也有全为偶数时的情况)
·修复zip伪加密
第一种方法,使用工具,如使用ZipCenOp.jar工具进行修复,具体用法见csdn
第二种方法,将两个全局方式位中第一个字节的数据全部修改为偶数
我们来看一道题
实战:题源buuctf-misc-zip伪加密
题目的附件是一个zip格式的压缩包
由于题目给了我们提示:伪加密,所以我们直接看全局方式位(标红)
修改两处为00 00
得到flag{Adm1N-B2G-kU-SZIP}
至此,解题结束。
·总结:
我是如何找到两个全局位的?
我的方法是先找50 4B(zip文件特征)
第一个50 4B后的第5、6比特位是压缩源文件数据的全局方式位标记
第二个50 4B后的第7、8比特位是压缩源文件目录区的全局方式位标记
RAR格式压缩包伪加密
伪加密的RAR文件如果直接用WinRAR打开,会提示文件头已损坏。这是由于RAR文件有头部校验。针对这种打不开的情况,一般先考虑伪加密
使用010editor,查看第24个字节的数据,该字节的数据尾数为4则表示加密,0表示无加密,那我们看一下打不开的文件试试
发现第24位的数据为04,尾数刚好为4,将它修改为0即可
一道题了解steghide工具的使用
实战:题源buuctf-misc-九连环
查看题目附件是一个jpg文件,直接先拖到010editor里看一下
发现了不少压缩文件
那就进kali用binwalk分解一下
4C68.zip解压出来一个名为asd的文件夹,文件夹下有一个带密码的压缩文件,还有一个打不开的jpg文件,想到可能是伪加密,那就按照这个方向进行解题
把4C68.zip拖入010editor中看一下
用50 4B关键字查找发现大概11个关键字,挨个50 4B看全局方式位标记,大部分都是未加密的,有点懵。
想到题目名称是九连环,那我们就找找第九个50 4B关键字,上下翻一下,果然发现了一个已加密的全局方式位01 08,这就是伪加密。
修改01 08为00 08,保存文件
尝试解压4C68.zip压缩包,可以看到图片正常打开了。
同时看到qwe.zip中的flag.txt需要密码才能得到。
那么我们的目标就是找到该压缩文件的密码,既然我们已经修复好了图片,那就从图片入手。
拖到010editor中发现不是伪加密,没有得到有价值的信息
binwalk一下呢?
不好意思,啥都没有。
那就用下stegsolve试试,也不是LSB隐写
到这,用下steghide工具
Linux下输入steghide extract -sf ‘文件名’ 命令
它会提示输入密码口令
我们直接留空即可
执行命令后,发现图片里隐写了一个ko.txt的文件
用Linux自带的Mousepad打开ko.txt文件,发现是乱码?
(目前尚不清楚乱码的原因,猜测是编码不一致的问题)
那就用Windows下的记事本打开,发现下面一行就是压缩包的密码
用密码对压缩包进行解密可得flag
flag{1RTo8w@&4nK@z*XL}
至此,解题结束
尾记:
以上是我2023.11.14以来作为ctf小白以来解出的misc的新型题型,了解了LSB隐写,频域盲水印,图片异或,FFT隐写,zip伪加密等。能够熟练使用misc工具:binwalk、stegsolve、zsteg等