CTF‑MISC 隐写术完整学习笔记|图片隐写全题型 + 工具 + 实战例题

一、介绍

隐写术是一门关于信息隐藏的技巧与科学,所谓信息隐藏指的是不让除预期的接收者之外的任何人知晓信息的传递事件或者信息的内容。隐写术来源于特里特米乌斯的一本讲述密码学与隐写术的著作。

二、常用工具

(一)文本分析器

  1. Winhex

  2. HxD

  3. 010Editor

  4. N0tepad

(二)图片隐写

  1. Stegsolve(需要配置 java 环境)

  2. QR Research

  3. HxD

(三)常用命令

  1. Formost(拆分文件)

  2. Binwalk(分析文件)

  3. strings

三、类型

图片隐写、音频隐写、视频隐写、文本隐写、其他类型隐写

四、图片隐写

1. Exif 信息隐藏

exif 是一种可交换图像文件格式(英语:Exchangeable image file format,官方简称 Exif),

专门为数码相机的照片设定的文件格式,可以记录数码照片的属性信息和拍摄数据。EXIF可以附加于 JPEG 、TIFF 、RIFF 等文件之中,为其增加有关数码相机拍摄信息的内容和索引图或图像处理软件的版本信息

相关的exif 查看器下载百度很多,这是我在百度上找到的一个网址: EXIF信息查看器无需安装软件,只需上传照片即可查看完整EXIF信息,包括机身、镜头型号、拍摄时间、相机快门次数,支持JPEG、TIFF、CR2、NEF、XMP等多种图片格式。无需下载,比Exif Show, ExifPro更好用的EXIF查看器!https://exif.tuchong.com/

还有一种情况是直接在图片属性的备注里给出 flag ,这种情况可以用 010editor 或者winhex 等工具打开图片搜索关键字如 flag 、ctf 等查看。

2. Gif 隐写

用Stegsolve可以一帧一帧查看,往往答案就隐藏在其中一帧中

通过cmd打开 stegsolve,命令为 Javaw -jar D:\xia\Stegsolve.jar(修改为自己下载 stegsolve的路径),点击下图所示的小箭头就可以左右查看了

3. LSB 隐写

工具:stegsolve(需要 java 环境)

用该工具打开图片后,点击下图所示的选项

然后按照下图点击


最后点击 preview ,有时候点击 preview 没有用,需要点击最下面的 save text 或者 save bin才能得出结果

另一个方法就是使用 zsteg 工具,需要 kali 里面在线安装:gem install zsteg ,使用命令格式: zsteg filename

题目:buuctf lsb1

4. 图片修复

1 文件头修复

常见的图片格式文件头如下

修复使用工具:010editor 、winhex 等

方法: 以 16 进制的方式打开文件,在文件最开始添加相应的文件头

2 CRC 校验修复
工具:tweakpng ,winhex

这时这个图片的 crc 值没有出错,用这个工具打开该图片,不会报错,如果将 crc 值修改一下,再用tweakpng 打开就会报错,并且会提示该图片现有的宽高应有的 crc 是多少

此时确保宽高是在正确的情况下修改成正确的 crc 值即可

3 宽高修复

对于 png 格式的图片,宽高的数据位置如下图所示

如果题目简单,可以直接尝试修改宽高

建议:一般选择修改高度,一点点的改动即可,如果随意修改宽度一般都会造成图像错误。

一个简单的检测宽高是否有误的方法:在 windows 下能打开的图片在 linux 下不能打开,就表示可能宽高存在问题。

最正确的方法是通过 crc 值爆破宽高,下面是大佬的脚本

#!/usr/bin/env python

#-*- coding:UTF-8 -*-

import binascii

import struct

import os

crcbp = open("flag.png","rb").read() #open 内文件名

for i in range(1024):

for j in range(1024):

data = crcbp12:16 + struct.pack('>i',i) + struct.pack('>i',j) + crcbp24:29 crc32 = binascii.crc32(data) & 0xffffffff

if crc32 == 0x4d614986 :#此处填 CRC 值print (i);

print (j);

print (hex(i),hex(j))爆破出来后修改即可

5. 对于两张相同图片的隐写

1 盲水印

水印是一种肉眼不可见的水印方式,对图片资源使用图片盲水印或者文字水印,借此避免数字媒体未经授权的复制和拷贝,可通过对原图进行解码操作,得到水印图来证明版权归属。

两张相同的图片首先考虑盲水印

具体解法:

a. 先安装 opencv,选择一条命令安装

pip install opencv-python

pip3 install opencv-python

b. 安装 matplotlib

c. 使用以下一条命令提取盲水印(取决于运行的是 python2 还是 python3)

d. 生成图片,得到 flag

2 组合进行不同运算(and 、or 、xor 等)

工具:stegsolve

点击下图所示的选项


之后会需要再打开一张图片,此时注意两张图片的打开顺序不同,最终结果也不同,实际操作的时候需要多试几次

6. 文件分离

工具:binwalk 、formost 、dd

binwalk:可快速分辨文件是否由多个文件合并而成,并将文件进行分离。

分析文件:binwalk filename

分离文件:binwalk -e filename

formost 命令:formost filename -o 输出的目录名

formost 简便方法:

1 下载 formost 网址:GitHub - raddyfiy/foremost: Compile foremost for windows so it can run without cygwin. Check README for instruction to compile for windows. · GitHubCompile foremost for windows so it can run without cygwin. Check README for instruction to compile for windows. - raddyfiy/foremosthttps://github.com/raddyfiy/foremost

2 在 foemost 所在文件夹新建一个文本,里面写:

@echo off

cd D:\OtherApp\CTFTool\foremost -->这行需要你换成你的安装目录,即 foremost.exe 所在目录

set path=%~dp1

start foremost -i %1 -o %path%\outfile echo foremost 解密成功

pause

3 保存,把后缀 txt 改为 bat

4 复制 bat 文件

5 打开 sendto 文件夹,一般在 C:\Users\你的用户名\AppData\Roaming\Microsoft\Windows\SendTo

6 右键,粘贴快捷方式(不是粘贴),改成想要的名字

7 使用时选择"发送到 "即可,会自动生成一个文件夹

dd:当文件自动分离出错或者因为其他原因无法自动分离时使用

格式:

dd if=源文件 of =目标文件名 bs=1 skip=开始分离的字节数参数说明:

if=file 输入文件名,缺省为标准输入

of=file 输入文件名,缺省为标准输入

bs=bytes 同时设置读写块的大小为 bytes ,可代替 ibs 和 obs

skip=blocks 从输入文件开头跳过 blocks 个块后再开始复制补充:如果一个工具分离不出来可以多试几种

题目:buuctf 间谍启示录

7. 二维码

取反色

工具:windows 自带的画图软件

当二维码的三个定位点是白色的时候,就要进行取反

有任何问题都可以随时关注私信!

相关推荐
码视野1 小时前
多宠 RFID 颈圈识别与湿粮半导体制冷保鲜分餐喂食器解决方案(软硬件一体化)
大数据·人工智能·python
未若君雅裁1 小时前
让模型按契约返回数据,LangChain 结构化输出实战
python·langchain
学习中.........2 小时前
Transformer 训练资源估算:以 CS336 GPT-2 XL 配置为例
人工智能·python·算法·机器学习·自然语言处理
小陈的进阶之路8 小时前
Claude Code辅助测试:导入篇skills
python·自动化
whcyhhh9 小时前
头歌实践教学平台:大数据存储2023(六)
大数据·数据库·python
for_ever_love__10 小时前
python基础语法学习: 闭包
开发语言·python·学习·闭包
ly768910 小时前
Python 全面入门:从核心语法到工程实践
开发语言·python
Niuguangshuo11 小时前
DeepFilterNet 3:端侧实时全带降噪的开源标杆
python
第一程序员12 小时前
AI 辅助编程的 7 个误区:把模型当高级搜索引擎是对它的最大浪费
python·rust·github