图片
隐写、盲水印
文件头尾
文件类型 | 文件头 | 文件尾 | 特征 |
---|---|---|---|
JPEG (jpg) | FFD8FF | FF D9 | ÿØÿà |
PNG (png) | 89504E470D0A1A0A | AE 42 60 82 | .PNG… |
GIF (gif) | 47494638 | 00 3B | GIF89a |
ZIP Archive (zip) | 504B0304 | 50 4B | PK… |
TIFF (tif) | 49492A00 | ||
Windows Bitmap (bmp) | 424D | BM | |
RAR Archive (rar) | 52617221 | Rar!.. | |
Wave (wav) | 57415645 | ||
AVI (avi) | 41564920 | ||
MPEG (mpg)包含音频数据和视频数据 | 000001BA | ||
MPEG (mpg)只包含视频数据 | 000001B3 | ||
7Z | 377ABCAF271C | 7z¼¯’ | |
CAD (dwg) | 41433130 | ||
Adobe Photoshop (psd) | 38425053 | ||
Rich Text Format (rtf) | 7B5C727466 | ||
XML (xml) | 3C3F786D6C | ||
HTML (html) | 68746D6C3E | ||
Email [thorough only] (eml) | 44656C69766572792D646174653A | ||
Outlook Express (dbx) | CFAD12FEC5FD746F | ||
Outlook (pst) | 2142444E | ||
MS Word/Excel (xls.or.doc) | D0CF11E0 | ||
MS Access (mdb) | 5374616E64617264204A | ||
WordPerfect(wpd) | FF575043 | ||
Adobe Acrobat (pdf) | 255044462D312E | ||
Quicken (qdf) | AC9EBD8F | ||
Windows Password (pwl) | E3828596 | ||
Real Audio (ram) | 2E7261FD | ||
Real Media (rm) | 2E524D46 | ||
Quicktime (mov) | 6D6F6F76 | ||
Windows Media (asf) | 3026B2758E66CF11 | ||
MIDI (mid) | 4D546864 | ||
Win PE | 4D5A | MZ | |
ELF | 7F 45 4C 46 | .ELF | |
VMDK | 4B 44 4D | KDM | |
Java-class | CA FE BA BE | Êþº¾ |
outguess
使用outguess
输入outguess -help即可获得相关命令。
加密:
outguess -k “my secret key” -d hidden.txt demo.jpg out.jpg
加密之后,demo.jpg会覆盖out.jpg,hidden.txt的内容是要隐藏的东西。
解密:
outguess -k “my secret key” -r out.jpg hidden.txt
解密之后,紧密内容放在hidden.txt中
[WEEK1]Steganography
careful.jpg文件尾
MTJlcmNzLi4uLi45MDlqaw==
Base64:
12ercs.....909jk
用blindwatermark没解出
blindwatermark没配置好
队友直接暴力破解
Passware Kit Forensic暴力美学-已知部分密码自定义解密详细参数设置
flag{4d72e4f3-4d4f-4969-bc8c-a2f6f7a4292c}
看wp中间密码在第二张图备注部分。。。
[WEEK2]奇怪的screenshot
用kali的Acropalypse-Multi-Tool,widow下工具运行失败
杨吕褚朱窦任云伍孙赵孙李伍孙冯李赵李伍袁尤张钱钱伍花张尤曹曹尤张朱伍魏赵赵吕伍尤金伍张赵魏伍花韩蒋陶华韩
百家姓编码
magnet:?xt=urn:btih:flagCVE-2023-28303-Win11-Snipping-t00l-is-n0t-Secure
flag{CVE-2023-28303-Win11-Snipping-t00l-is-n0t-Secure}
[WEEK2]图片里的秘密
分离图片
官方wp:根据题目描述,进行单图盲水印提取即可(使用工具或者脚本都可)
???
盲僧能出水银鞋吗?
[WEEK2]可爱的洛琪希
base64解码保存为图片
详细信息
736c6e6f7b52626b795f71696966686b76217d
010有
key:nanian
flag{Roxy_daisuki!}
[WEEK1]Jaeger lover
题目提示,一共4个steg,一张图2个steg
两个文件一个zip加密,一个下列jpg,用StegSolve没有有效信息,cloacked-pixel也没有加密
010打开发现结尾这段话:
D2tuwY3kHFjHkpP6SpgvQwkhrXLpKqbzYvhpbVou4tQgSrPEyaRTNGTHAmUzndjMn1BUwugvZEiskACusKdS9qEXcb5dsWnb8DPCmKeD5emdqPWxRUT5vsS2KhbAsQ7SRqimwsmV4XhXH5W4KeYXMGX7w9pQry4LVUG56pSvvFLfgXyx3REVUDoiQm6PhZhLqjRpMDtYxMRbsjpbvcg4TvzRz8XXWwGKSbcRtoCgjTwyxG53P7kqgrkyvk7eGXvbKAwT2VsCpVw81c8L16uT1bZ8a1ne483fkKHn5JmWHyqf4WKZMv
解密
you know the Windows is a system for PC,but do you know the what is thr Op. System for this Jaeger?
你知道Windows是PC机的操作系统,但你知道这台机甲的操作系统是什么吗?
Tri-sun Horizon Gate
tri-sun horizon gate
原文
机型:第四代(Mark-IV)所属国家:中国🇨🇳
高度:76米
重量:1722吨
操作系统:“三阳”地平线闸道器(Tri-sun Horizon Gate)
用stegdetect检测有无
Stegdetect,它可以检测到通过JSteg、JPHide、OutGuess、Invisible Secrets、F5、appendX和Camouflage等这些隐写工具隐藏的信息,并且还具有基于字典暴力破解密码方法提取通过Jphide、outguess和jsteg-shell方式嵌入的隐藏信息。
> .\stegdetect.exe -tjopi -s 10.0 C:\Users\18084\Desktop\Typhoon.jpg
: jphide(**)
这时候使用JPHS以Tri-sun Horizon Gate为密码去提取文件失败,小写也不行
再次使用stegdetect爆破密码
> .\stegbreak.exe -r .\rules.ini -f .\password.txt -t p .\Typhoon.jpg
Loaded 1 files...
.\Typhoon.jpg : negative
Processed 1 files, found 0 embeddings.
Time: 20 seconds: Cracks: 423182, 21159.1 c/s
用自带字典失败
扩容字典
'Tri-sun Horizon Gate'
Tri sun Horizon Gate
tri-sun horizon gate
tri sun horizon gate
Tri-sunHorizonGate
TrisunHorizonGate
tri-sunhorizongate
trisunhorizonhate
'Tri-sun Horizon Gate'
失败
[WEEK1]也许需要一些py
http://shctf.club:8000/games/2/challenges
下载文件,一个加密zip文件
用010 Editor打开
发现文件尾有摩斯密码,解码
根据题目提示发现,转化成小写位zip的密码
提取出两个文件
改flag1文件头保存为png文件
63e62fbce22f2757f99eb7da179551d2
尝试用Ciphey工具
>activate python38
>ciphey -t '63e62fbce22f2757f99eb7da179551d2'
🌑 Thinking...
失败
对大小写进行转换
import itertools
import hashlib
s = "pNg_and_Md5_SO_GreaT"
md5_hash = "63e62fbce22f2757f99eb7da179551d2"
for c in itertools.product([0, 1], repeat=len(s)):
tmp = ""
for i in range(len(s)):
if c[i]:
tmp += s[i].upper()
else:
tmp += s[i].lower()
if hashlib.md5(tmp.encode()).hexdigest() == md5_hash: # 如果这个的字符串的MD5值等于63e62fbce22f2757f99eb7da179551d2
print("匹配成功:", tmp) # 那么就输出它
break
else:
print("未找到匹配的字符串")
flag{Png_AnD_md5_so_GReAt}
[BUUCTF] FLAG
下载为这样一个图
用StegSolve打开
save Bin
用010Editor打开
ELF
是elf文件,放入kali里,运行得出flag
sudo chmod 777 1 #提权http://t.csdnimg.cn/9sxOF
./1 #运行
[BUUCTF]刷新过的图片
用了其他脚本没有发现隐写
看wp
刷新----F5-steganography
F5-steganorgraphy要JAVA11环境
>java Extract C:\Users\18084\Desktop\Misc.jpg
Huffman decoding starts
Permutation starts
309504 indices shuffled
Extraction starts
Length of embedded file: 190 bytes
(1, 31, 5) code used
output.txt
504b 0304 1400 0000 0800 6686 e14c 3c72
4559 2800 0000 2600 0000 0800 0000 666c
6167 2e74 7874 4bcb 494c afb6 344b 4d4b
3148 3432 3036 4f31 304b 3336 31b4 b44c
b534 3234 30b7 3437 b748 4dad 0500 504b
0102 1f00 1400 0100 0800 6686 e14c 3c72
4559 2800 0000 2600 0000 0800 2400 0000
0000 0000 2000 0000 0000 0000 666c 6167
2e74 7874 0a00 2000 0000 0000 0100 1800
c930 eca9 1811 d401 1f9a 88aa 1811 d401
d86b 2007 1811 d401 504b 0506 0000 0000
0100 0100 5a00 0000 4e00 0000 0000
flag{96efd0a2037d06f34199e921079778ee}
[BJDCTF2020]just_a_rar
爆破出四位数密码
没有隐藏信息
用JEPGsnoop
exiftool也可以
exiftool.exe c:\Users\18084\Desktop\flag.jpg
ExifTool Version Number : 12.68
File Name : flag.jpg
Directory : c:/Users/18084/Desktop
File Size : 105 kB
File Modification Date/Time : 2016:07:27 09:40:10+08:00
File Access Date/Time : 2023:10:25 16:06:01+08:00
File Creation Date/Time : 2023:10:25 11:20:30+08:00
File Permissions : -rw-rw-rw-
File Type : JPEG
File Type Extension : jpg
MIME Type : image/jpeg
JFIF Version : 1.01
Resolution Unit : inches
X Resolution : 1
Y Resolution : 1
Exif Byte Order : Big-endian (Motorola, MM)
XP Comment : flag{Wadf_123}
Padding : (Binary data 2060 bytes, use -b option to extract)
Image Width : 580
Image Height : 868
Encoding Process : Baseline DCT, Huffman coding
Bits Per Sample : 8
Color Components : 3
Y Cb Cr Sub Sampling : YCbCr4:2:0 (2 2)
Image Size : 580x868
Megapixels : 0.503
**metadata++**更好用
[BJDCTF2020]一叶障目
无隐藏文件,用tweakpng打开显示CRC错误
IHDR块的crc错误(是c20f1fc6,应该是55900eef)
IHDR
0000 000d
说明IHDR头块长为13
4948 4452
IHDR标识(ascii码为IHDR)下面是IHDR数据块的实际内容
0000 0018
图像的宽,24像素
0000 0018
图像的高,24像素
08
表示色深,这里是2^8=256,即这是一个256色的图像
06
颜色类型,查表可知这是带α通道数据的真彩色图像
00
PNG Spec规定此处总为0(非0值为将来使用更好的压缩方法预留),表示使压缩方法(LZ77派生算法)
00
同上
00
非隔行扫描
e0 773d f8
CRC校验CRC(cyclic redundancy check)域中的值是对Chunk Type Code域和Chunk Data域中的数据进行计算得到的。CRC具体算法定义在ISO 3309和ITU-T V.42中,其值按下面的CRC码生成多项式进行计算:
x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1
在网上找到了大佬关于png修复CRC错误的脚本
#coding=utf-8
import zlib
import struct
#读文件
file = '1.png' #注意,1.png图片要和脚本在同一个文件夹下哦~
fr = open(file,'rb').read()
data = bytearray(fr[12:29])
crc32key = eval(str(fr[29:33]).replace('\\x','').replace("b'",'0x').replace("'",''))
#crc32key = 0xCBD6DF8A #补上0x,copy hex value
#data = bytearray(b'\x49\x48\x44\x52\x00\x00\x01\xF4\x00\x00\x01\xF1\x08\x06\x00\x00\x00') #hex下copy grep hex
n = 4095 #理论上0xffffffff,但考虑到屏幕实际,0x0fff就差不多了
for w in range(n):#高和宽一起爆破
width = bytearray(struct.pack('>i', w))#q为8字节,i为4字节,h为2字节
for h in range(n):
height = bytearray(struct.pack('>i', h))
for x in range(4):
data[x+4] = width[x]
data[x+8] = height[x]
#print(data)
crc32result = zlib.crc32(data)
if crc32result == crc32key:
print(width,height)
#写文件
newpic = bytearray(fr)
for x in range(4):
newpic[x+16] = width[x]
newpic[x+20] = height[x]
fw = open(file+'.png','wb')#保存副本
fw.write(newpic)
fw.close
这个脚本也行,爆破png长宽高
import binascii
import struct
crcbp = open("C:\\Users\\18084\\Desktop\\1.png","rb").read() #打开图片
crc32frombp = int(crcbp[29:33].hex(),16)#获取图片的crc32值
print(crcbp[29:33])
print(crcbp[29:33].hex())
print(crc32frombp)
print(crc32frombp)
for i in range(4000):
for j in range(4000):
data = crcbp[12:16]+ \
struct.pack(">i",i)+ struct.pack(">i",j)+crcbp[24:29]
crc32 = binascii.crc32(data)&0xffffffff
if(crc32 == crc32frombp):
print(i,j)
print('hex:',hex(i),hex(j))
exit(0)
flag{66666}
[GDOUCTF 2023]pixelart
伪加密
用ZipCen0p处理失败,文件头的加密标识没改,要注意。
手动改,是一张图片,文件尾有320x180
字段,图片放大也有像素点
用脚本提取
from PIL import Image
original_image = Image.open('arcaea.png')
new_width = original_image.width // 12
new_height = original_image.height // 12
new_image = Image.new("RGB",(new_width,new_height))
for x in range(new_width):
for y in range(new_height):
pixel = original_image.getpixel((x *12,y*12))
new_image.putpixel((x,y),pixel)
new_image.save("flag.png")
flag{fade_flag}不是flag
用zsteg
zsteg可以检测PNG和BMP图片里的隐写数据。
目前,zsteg支持检测:
- LSB steganography in PNG & BMP
- zlib-compressed data
- OpenStego
- Camouflage 1.2.1
- LSB with The Eratosthenes set
(这个工具太香了,爱死)
1.查看lsb数据
zsteg xxx.bmp
zsteg xxx.png
zsteg -a (文件名) #查看各个通道的lsb
123
2.检测zlib
#-b的位数是从1开始的
zsteg zlib.bmp -b 1 -o xy -v
12
3.提取该通道图片
zsteg -e b8,a,lsb,xy 文件.png -> out.png
flag{J3st_2_cats_battlin
[LitCTF 2023]ssvvgg
svg图片提取bas64成jpg
用steghide 爆破
密码生成脚本
:
@echo off
setlocal enabledelayedexpansion
set start=100000
set end=1000000
set filename=mima.txt
(for /l %%i in (%start%, 1, %end%) do (
echo %%i
)) > %filename%
echo File %filename% generated successfully.
爆破脚本
:
linux
#bruteStegHide.sh
#!/bin/bash
for line in `cat $2`;do
steghide extract -sf $1 -p $line > /dev/null 2>&1
if [[ $? -eq 0 ]];then
echo 'password is: '$line
exit
fi
done
window
@echo off
for /f %%i in (%2) do (
steghide.exe extract -sf %1 -p %%i > nul 2>&1
rem echo steghide.exe extract -sf %1 -p %%i
rem if %errorlevel% equ 0 (
rem echo password is: %%i
rem exit
)
)
这两个脚本太慢了,半天都爆破不出来
尝试用Stegseek
Stegseek介绍
Stegseek是迄今为止全世界最快的Steghide破解器,该工具每秒能够处理数百万的密码。虽然Stegseek是一款轻量级工具,但丝毫不影响其功能性的强大。该工具作为原始Steghide项目的一个分支而构建,它的速度比其他破解器快上千倍。在该工具的帮助下,广大研究人员可以轻松从使用了Steghide隐写&加密的文件中提取出隐藏的数据。
除此之外,Stegseek还可以用来提取Steghide的元数据,我们可以利用这些信息来判断一个文件中是否包含了Steghide数据。
值得一提的是,仅需两秒钟,该工具就可以跑完rockyou.txt字典。而众所周知,rockyou.txt是一个包含了超过1400万个密码的强大字典文件。
Stegseek
只支持在liunx
stegseek test.jpg mima.txt