Misc大乱炖
好像所有的misc手都有一个自己的all in one笔记,于是乱炖一通√
加密及编码
URL编码
字符 | 编码 | 字符 | 编码 | 字符 | 编码 |
---|---|---|---|---|---|
空格 | %20 | ! | %21 | “ | %22 |
# | %23 | $ | %24 | % | %25 |
& | %26 | ‘ | %27 | ( | %28 |
) | %29 | * | %2A | + | %2B |
, | %2C | - | %2D | . | %2E |
/ | %2F | : | %3A | ; | %3B |
< | %3C | = | %3D | > | %3E |
? | %3F | @ | %40 | [ | %5B |
\ | %5C | ] | %5D | ^ | %5E |
_ | %5F | ` | %60 | { | %7B |
| | %7C | } | %7D | ~ | %7E |
Base家族
常用的base表
1 | base16 flag 666C6167 |
base64的原理
第一步,将待编码的字符串各个字符转换为对应的ASCII码,并转换为8位二进制。
第二步,将得到的8位二进制序列分割为每6个一组(不足的末尾补0)
第三步,将每个6位二进制数列转换为十进制数字。
第四步,根据Base64编码对照表获得对应的值。
第五步,若编码所得字符串长非4倍,添一个或两个“=”补上
注意换表(要求字符不重复)。
base58
base58有两个常用表,一个是Bitcoin,另一个是Ripple。
Base64隐写
常见的Base64隐写题为一个txt文本文档,内含多个经过base64编码的字符串,用PuzzleSolver或随波逐流都可以解。
原理
在base64加密的第二步中添加的0字符会在进行base64解码时被舍弃,这意味着在这一步时添加的二进制值可以不全为0,且不影响解密结果(即使会改变”=“前最后一个字符的值)。
将所有被修改过的base64字符串结尾的二进制值提取出来组成一个二进制串,以8位分割并转为十进制值,最终十进制对应的ASCII字符串即为base64隐写结果。
AES加密
AES/DES/3DES加密过后开头总为U2FsdGVkX1,在base64解码后为Salted。
手机键盘密码
即键盘九宫格,两种形式。

1.如:A=21,E=32
特点是每组数字有且仅有两个,第一个范围为29,第二个范围为14
解密脚本:
1 | import re |
2.如:999 666 88 2 777 33 6 999 4 4444 777 555 333 777 444 33 66 3 7777
数字对应手机的每个键位,几个数字代表按几下。
MD5加密
MD5加密后的密文应该是纯数字+纯字符。
16位的MD5其实是取32位的8-24位。
在线爆破网址:
emoji-aes
密文由一大串emoji表情组成,解密需要密钥。
在线解密网址:https://aghorler.github.io/emoji-aes/
1 | 明文:flag |
注:base100也是一堆emoji表情。
flag=👝👣👘👞
词频分析/字频分析
有一大堆内容的文本。
词频分析在线网站:https://quipqiup.com/
字频分析可以随波逐流。
摩斯电码
由点(.)、横(.)、空格/斜杠(可无)组成。
当有些东西(包括但不限于大量压缩包的后缀名、多张图片的黑白等)有且只有三种时也可以考虑摩斯电码的情况。
维吉尼亚密码
若已知密文和key,则可以用赛博厨子。
对照表:
图片
PNG文件结构
PNG文件结构很简单,主要有数据块(Chunk Block)组成,最少包含3个数据块及一个标识头:
HEX 数据 | 数据块名称 | 数据块符号 | 位置限制 |
---|---|---|---|
89 50 4E 47 0D 0A 1A 0A | PNG标识符 | sig | 开头 |
00 00 00 0D 49 48 44 52 | 文件头数据块 | IHDR | 第一块 |
图像数据块 | IDAT | 与其他IDAT连续 | |
图像结束数据 | IEND | 最后一个数据块 |
一些其他数据块:
数据块符号 | 数据块名称 | 多数据块 | 可选否 | 位置限制 |
---|---|---|---|---|
cHRM | 基色和白色点数据块 | 否 | 是 | 在PLTE和IDAT之前 |
gAMA | 图像γ数据块 | 否 | 是 | 在PLTE和IDAT之前 |
sBIT | 样本有效位数据块 | 否 | 是 | 在PLTE和IDAT之前 |
PLTE | 调色板数据块 | 否 | 是 | 在IDAT之前 |
bKGD | 背景颜色数据块 | 否 | 是 | 在PLTE之后IDAT之前 |
hIST | 图像直方图数据块 | 否 | 是 | 在PLTE之后IDAT之前 |
tRNS | 图像透明数据块 | 否 | 是 | 在PLTE之后IDAT之前 |
oFFs | (专用公共数据块) | 否 | 是 | 在IDAT之前 |
pHYs | 物理像素尺寸数据块 | 否 | 是 | 在IDAT之前 |
sCAL | (专用公共数据块) | 否 | 是 | 在IDAT之前 |
tIME | 图像最后修改时间数据块 | 否 | 是 | 无限制 |
tEXt | 文本信息数据块 | 是 | 是 | 无限制 |
zTXt | 压缩文本数据块 | 是 | 是 | 无限制 |
fRAc | (专用公共数据块) | 是 | 是 | 无限制 |
gIFg | (专用公共数据块) | 是 | 是 | 无限制 |
gIFt | (专用公共数据块) | 是 | 是 | 无限制 |
gIFx | (专用公共数据块) | 是 | 是 | 无限制 |
PNG文件中,每个数据块由4个部分组成,如下:
名称 | 字节数 | 说明 |
---|---|---|
Length (长度) | 4字节 | 指定数据块中数据域的长度,其长度不超过(231-1)字节 |
Chunk Type Code (数据块类型码) | 4字节 | 数据块类型码由ASCII字母(A-Z和a-z)组成的“数据块符号” |
Chunk Data (数据块数据) | 可变长度 | 存储按照Chunk Type Code指定的数据 |
CRC (循环冗余检测) | 4字节 | 存储用来检测是否有错误的循环冗余码 |
通用思路
exif数据隐藏信息
利用exiftool批量查找exif信息。
1 | >>exiftool *|grep flag |
图片中间/末尾隐藏信息
010中间翻一翻。
盲水印隐写
一张图片
可以用隐形水印工具V1.2或者 WaterMark 来提取水印。
两张图片
1 | 先把要处理的图片拉入BlindWaterMark-master文件夹,然后使用如下命令 |
CRC错误/宽高隐写
爆破宽高后修改宽高。
F5图片隐写(刷新键)
利用F5-steganography。
1 | java Extract Misc.jpg |
steghide图片隐写
1 | 查看图片中嵌入的文件信息:steghide info out.jpg |
outguess图片隐写
1 | 有密码:outguess -k "DuDuLu~T0_Ch3@t_THe_w0r1d" -r 2.jpg 3.txt |
提取等像素点
1.使用PS。在PS中将宽高都修改为x分之一,并选择邻近硬边缘即可得到所需图片。
2.利用CTFD中的Get_Pixels.py。
1 | py main.py -f arcaea.png -p 0x0+3828x2148 -n 12x12 |
PNG思路
LSB隐写
无密码
用zsteg梭一下,或者用stegsolve分析。
有密码(cloacked-pixel-master)
1 | python2 lsb.py extract a.png flag.txt password |
GIF
分帧
一帧帧看吧就。
帧间隔隐写(时间间隔隐写)
通过每一帧之间的时间不同来进行隐写。
用puzzlesolver可以梭一下。
好像还有个ubuntu下的identify可以用,但是还没试过。
1 | identify -format "%T" flag.gif |
二维码
音频
摩斯电码
可以直接看,也可以边听边打。
如果是单声道的可以试一试随波逐流一把梭。
SSTV慢扫描电视
1.RX-SSTV
1 | 1.点击Setup-Sound Control and Devices将默认输入设备和输出设备都设置为虚拟声卡line1 |
2.github上的脚本
1 | $ sstv -d audio_file.wav -o result.png |
优点:不用播放音频。
缺点:调制方法较少。
电话音分析
用在线网站解码:http://www.dialabc.com/sound/detect/
或是使用windows下的软件:dtmf2num
1 | .\dtmf2num.exe .\girlfriend.wav |
对照表
mp3stego
1 | # Encode |
deepsound
先用 deepsound 打开试一下,如果需要密码说明就是 deepsound 隐写,有密钥直接填入密钥解密即可。
silenteye
wav音频文件可能是 silenteye 隐写,可以拿默认密码 silenteye 解密试试看。
无线电调制(gnu)
wsl中输入gnuradio-companion打开,一般根据提供的grc文件逆一下即可。
PT2242信号
钥匙信号(PT224X) = 同步引导码(8bit) + 地址位(20bit) + 数据位(4bit) + 停止码(1bit)
例题:[SCTF2019]电单车
短的为0,长的为1,可以打出:
0 011101001010101001100010 0 011101001010101001100010
flag为地址码:
flag{01110100101010100110}
steghide
1 | steghide extract -sf out.wav |
Sonic Visualiser
可以用来分析频谱图(spectogram)
Layer—>Add Spectogram
例题:[UTCTF2020]spectogram
TXT
不可见字符
零宽字符
通过零宽字符来加密文本,我们需要先将文本转成二进制的形式即只包含0
和1
,并使用空格将每个字符隔开,然后任选3个零宽字符分别用来表示“0
”,“1
”,“空格
”,然后将所有的字符连接起来即可完成信息加密,在得到加密字符串后,我们还可以选择将其隐藏于正常的字符串中。
常见的零宽字符有:

每一种基于零宽度字符的隐写都有自己的隐写方式及加密方式,所以可能用这一个工具(或脚本)加密过的字符串在另一个解密网站就无法成功解密。
在线解密网址:https://330k.github.io/misc_tools/unicode_steganography.html
SNOW隐写
snow 是一款在html嵌入隐写信息的软件,原理是通过在文本文件的末尾嵌入空格和制表位的方式嵌入隐藏信息,不同空格与制表位的组合代表不同的嵌入信息。
snow在ascii文本末尾隐藏数据,可以通过插入制表符和空格使数据在浏览器不可见。
snow最多添加7个空格,使每八列插入三位,文件中有许多制表符和空格。
snow隐写有宽度。
当notepad打开看见很多竖的时候考虑snow隐写。
例如:

可以无密码破解,去掉-p即可。
1 | .\SNOW.EXE -C -p 无情哈拉少zbc .\flag1.txt |
在线解密网址:https://fog.misty.com/perry/ccs/snow/snow/snow.html
不可见字符代替摩斯密码/一连串不可见字符代替1和0
例:[WUSTCTF2020]spaceclub

将长的一行转换为1,短的一行替换为0,就可以得到一串二进制编码。

二进制转字节即可得到flag。

ntfs
用NtfsStreamsEditor2扫描所在文件夹,然后导出可疑文件。
注意:如果是压缩包,一定要用winrar解压。
MS-Office
Word
1.全选更改颜色。
2.word的本质是压缩包。
3.与宏有关系的各种攻击与隐写。
4.利用行距的隐写(摩斯电码)。
挪走图片看见flag。
压缩包
zip文件结构
三部分:压缩文件源数据区 + 压缩源文件目录区 + 压缩源文件目录结束标志
文件源数据区(record)
HEX 数据 | 描述 | 010Editor 模板数据 |
---|---|---|
50 4B 03 04 | zip 文件头标记,看文本的话就是 PK 开头 | char frSignature[4] |
0A 00 | 解压文件所需 pkware 版本 | ushort frVersion |
00 00 | 全局方式位标记(有无加密) | ushort frFlags |
00 00 | 压缩方式 | enum COMPTYPE frCompression |
E8 A6 | 最后修改文件时间 | DOSTIME frFileTime |
32 53 | 最后修改文件日期 | DOSDATE frFileDate |
0C 7E 7F D8 | CRC-32 校验 | uint frCrc |
文件目录区(dirEntry)
HEX 数据 | 描述 | 010Editor 模板数据 |
---|---|---|
50 4B 01 02 | 目录中文件文件头标记 | char deSignature[4] |
3F 00 | 压缩使用的 pkware 版本 | ushort deVersionMadeBy |
0A 00 | 解压文件所需 pkware 版本 | ushort deVersionToExtract |
00 00 | 全局方式位标记(有无加密) | ushort deFlags |
00 00 | 压缩方式 | enum COMPTYPE frCompression |
E8 A6 | 最后修改文件时间 | DOSTIME frFileTime |
32 53 | 最后修改文件日期 | DOSDATE frFileDate |
0C 7E 7F D8 | CRC-32 校验 | uint frCrc |
文件目录结束标志(endLocator)
50 4B 05 06 | 目录结束标记 | char elSignature[4] |
---|---|---|
00 00 | 当前磁盘编号 | ushort elDiskNumber |
00 00 | 目录区开始磁盘编号 | ushort elStartDiskNumber |
常见报错及对应解决方法(借助010的模板功能)
(图片来自lunatic师傅的博客🥺)
1.该文件已损坏
修改源数据区或目录区的长度。
2.CRC校验错误。
修改源数据区或目录区的压缩方式。
伪加密
record中的frFlag位和dirEntry中的deFlag位用以标志压缩包是否加密,奇数为加密状态,偶数为未加密状态,可以通过修改这两个区的标志位做到压缩包伪加密。
不同压缩软件判断加密
解压工具 | 检测位置 |
---|---|
BandZip | deFlags |
WinRAR | deFlags |
7-Zip | frFlags |
有些出题人会只修改一处的标志位,因此可以通过更换解压工具来解压此类伪加密。
CRC爆破
适用于压缩包内文件较小的时候,例如只有几个字节的时候,可以使用脚本爆破,注意有的脚本只能爆破zip压缩包
如果需要根据CRC值爆破明文的话可以参考这个项目:https://github.com/theonlypwner/crc32
1 | python3 crc32.py reverse 0x7c2df918 |
明文攻击
条件
1.至少已知明文的12个字节及偏移,其中至少8字节需要连续。
2.明文对应的文件加密方式为 ZipCrypto Store(部分deflate也可以)
3.进行明文攻击前要判断制作压缩包的压缩工具,然后对已知明文使用特定工具进行压缩,再进行明文攻击。
压缩工具 | VersionMadeBy(压缩所用版本) |
---|---|
Bandzip 7.06 | 20 |
Windows自带 | 20 |
WinRAR 4.20 | 31 |
WinRAR 5.70 | 31 |
7-Zip | 63 |
Advanced Archive Password Recovery
1.已知完整三段密钥时可用。
2.有和压缩包中的一样(CRC值一样)的文件时也可用该软件破解。
bkcrack
常用参数
1 | -c 要解密的文件 |
1.已知完整三段密钥。
可以用 -U 参数修改压缩包密码并导出。
1 | $ bkcrack -C 00000218.zip -k ed3fb6a9 1c4a7211 c07461ed -U out.zip 111 |
2.已知相同文件。
1 | $ bkcrack -C flag.zip -c hint.jpg -p hint.jpg -P hint.zip |
3.已知部分明文
利用明文文本进行破解。
1
2
3
4
5
6
7
8
9
10#准备已知明文
echo -n "lag{16e3" > plain1.txt #连续的8明文
echo -n "74f6" | xxd #额外明文的十六进制格式,37346636
#攻击,-o是偏移量
bkcrack -C flag_360.zip -c flag.txt -p plain1.txt -o 1 -x 29 37346636
#使用得到的秘钥进行解密:
bkcrack -C flag_360.zip -c flag.txt -k b21e5df4 ab9a9430 8c336475 -d flag.txt
# -p 指定的明文不需要转换
# -x 指定的明文需要转成十六进制
# 提到的偏移都是指 “已知明文在加密前文件中的偏移”。利用PNG图片头进行破解。
1
2
3
4
5#准备已知明文
echo 89504E470D0A1A0A0000000D49484452 | xxd -r -ps > png_header
#攻击
bkcrack -C png4.zip -c 2.png -p png_header -o 0
bkcrack -C png4.zip -c flag.txt -k e0be8d5d 70bb3140 7e983fff -d flag.txt利用压缩包格式进行破解。
将一个名为flag.txt的文件打包成ZIP压缩包后,发现文件名称会出现在压缩包文件头中,且偏移固定为30,则此时已知的明文片段有:“flag.txt” 8个字节,偏移30;ZIP本身文件头:50 4B 03 04 ,4字节,满足12字节的要求。
有时“.txt”会影响破解结果,若利用此无法攻击成功,则去掉“.txt”再尝试。
1
2
3
4
5
6
7
8echo -n "flag.txt" > plain1.txt # -n参数避免换行,不然文件中会出现换行符,导致攻击失效
bkcrack -C test5.zip -c flag.zip -p plain1.txt -o 30 -x 0 504B0304
bkcrack -C test5.zip -c flag.zip -k b21e5df4 ab9a9430 8c336475 -d flag.zip
# 但若想解密2.png,由于是ZipCrypto deflate加密的
# 使用deflate算法压缩的文件,解码出来的是Deflate的数据流
# 所以解密后需要bkcrack/tool内的inflate.py脚本再次处理
bkcrack -C test5.zip -c 2.png -k b21e5df4 ab9a9430 8c336475 -d 2.png
python3 inflate.py < 2.png > 2_out.png
流量分析
取证
其他
eml邮件
1.直接用txt打开分析。
2.用qq邮箱附件发送给自己。(钓鱼邮件说发就发?)
3.在线eml分析网站(还没成功过: ) )
木马
双击运行后火绒剑一把梭。(偷笑)
文件头尾
1 | zip 文件头:50 4B 03 04 14 00 08 00 |