CTF之图片隐写

图片隐写1:chal.png,图片如下:

题目图片即为一张白板,用Stegsolve.jar工具打开,向右疯狂点箭头得到flag:

题目2:Here.png:

直接拖到kali里用binwalk -e Here.png得到释放出的文件夹中有flag.txt,打开即得到flag。

 

题目3:flag.png:

这个是LSB隐写:

首先用Stegsolve.jar打开

 

analyse->data extract->

分别选中red,green,blue的最低0位,然后右侧选中LSB First,然后Save Bin

保存得到aaa文件,将aaa文件拖入kali中binwalk之

得到释放后的_aaa.extracted进入看到:

有一个1文件,利用chmod a+x 1 改变文件1位可执行并执行得到flag

由上可得flag。

lsb隐写,一般都藏在0,1,2这些低位里面,在软件功能选项中查看Analyse→Data Extract,逐个调试。

题目4:图片拉长:

图片属性,查看图片像素

高为0477,利用calc.exe命令调出计算器,换算成十六进制为01DD。利用打开图片搜索十六进制01DD

找到后改为02DD拉长(对于png文件,其第二行第六列是高度位,改这一位即可

保存可以看到flag

记住改第2行,第6列。

题目5:图片逆转:1.reverseMe:

下载下来的文件用winhex查看一下发现头部D9FF很眼熟啊,想起来和JPEG文件格式的尾部FFD9正好反过来而且题目是reverseMe,赶紧去看看尾部D8FF正好是JPEG文件头倒过来,编写脚本:

#!usr/bin/python
f = open('C:\\jiaoben\\tttt.jpg','wb')
g = open('C:\\jiaoben\\1.reverseMe','rb')
f.write(''.join(g.read()[::-1]))
g.close()
f.close()

注意文件存放的目录,运行完成后生成tttt.jpg

利用mspaint windows自带的画图工具水平翻转即可:

最后把题目和工具上传。

 

### CTF JPG 图片术的技术原理及实现方法 JPG图片的常见技术主要依赖于最低有效位(Least Significant Bit, LSB)替换和离散余弦变换(Discrete Cosine Transform, DCT)。以下是具体的原理和技术细节: #### 1. **最低有效位(LSB)替换** 最低有效位替换是最常见的技术之一。它利用人类视觉系统的局限性,在图像的颜色通道中修改最低几位二进制数值,从而嵌入秘密信息[^2]。 对于RGB图像而言,每个像素由红、绿、蓝三个颜色分量组成,每种颜色通常占用8比特的空间。由于最低有效位的变化对整体色彩的影响微乎其微,因此可以安全地将数据藏其中。 ```python def lsb_hide(image_path, message): from PIL import Image img = Image.open(image_path).convert('RGBA') binary_message = ''.join(format(ord(char), '08b') for char in message) + '11111111' pixels = list(img.getdata()) new_pixels = [] index = 0 for pixel in pixels: r, g, b, a = pixel if index < len(binary_message): r_new = (r & ~1) | int(binary_message[index]) index += 1 else: r_new = r if index < len(binary_message): g_new = (g & ~1) | int(binary_message[index]) index += 1 else: g_new = g if index < len(binary_message): b_new = (b & ~1) | int(binary_message[index]) index += 1 else: b_new = b new_pixels.append((r_new, g_new, b_new, a)) stego_img = Image.new(img.mode, img.size) stego_img.putdata(new_pixels) return stego_img ``` 上述代码展示了如何通过Python脚本实现简单的LSB操作[^3]。 --- #### 2. **基于DCT的技术** JPEG格式采用的是有损压缩方式,核心在于离散余弦变换(DCT),这使得在频域而非空间域进行成为可能。相比于直接修改像素值的方法,这种方法更加蔽且难以被检测到。 具体过程包括以下几个阶段: - 将原始图像划分为多个8×8的小块; - 对这些小块分别施加DCT转换; - 修改某些特定频率系数的低阶比特以携带藏消息; - 应用逆向DCT恢复图像并保存为新的JPEG文件。 这种方案的优势在于即使经过多次压缩或者轻微编辑处理之后仍然能够较好保留所藏匿的信息内容[^1]。 --- #### 3. **工具支持下的实践流程** 在实际参加CTF竞赛过程中,选手们往往会借助专门设计好的软件完成快速分析工作。例如Stegsolve.jar就是一个非常流行的开源项目,它可以用来查看不同层面上的数据分布情况;而foremost则擅长批量提取潜在目标对象等特性。 --- ### 实现注意事项 当尝试构建自己的解决方案时需要注意以下几点事项: - 确保选用恰当编码机制以便兼容各种字符集; - 考虑容量限制因素以免破坏载体质量过多引起怀疑; - 测试多种环境条件下表现稳定性验证可靠性。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值