MISC_fist_编码
(基于CTF那些事)
1.分类
- 信息搜集
- 编码分析
- 隐写
- 网络流量分析
- 日志分析
- 电子取证
- and so on
2.离线解码工具
- koczkatamas
- CyberChef
PS.安装后,打开index.html使用,推荐用Chrome或Firefox
找到了一个纯纯的misc工具包,有需要的补
链接: https://pan.baidu.com/s/1ErtWZ9z1dnygLj7fjmYrAg 提取码: 1110
3.常见编码
- ASCII
- 可打印字符的范围(0~31||127)
- 不可打印字符的范围(32~126)
-例题:ascii.txt(找flag)
-用koczkatamas,复制文本粘贴到D/O/H,得flag

- Base64
- 把不可打印字符转换为可打印字符,不具有保密性、加密性
- 使用64个可见字符表示所有数据
- 原理:把原始数据按3个字节为一组进行分割,再将每组的3个8比特数据切分为4个6比特数据,根据编码表,将6比特数据转换为对应字符
- 标准的Base64表顺序:大写、小写字母、+和/(没有=)

- 以fla为例编出来为Zmxh(记住)
- 可能出现信息隐藏,因为填充值不同,解码时会丢弃下划线部分再解码。

- 例题:b64steg.txt
- 根据带=的数据,例如第二行
- IHdyaXRpbmcgaGlkZGVuIG1lc3NhZ2VzIGluIHN1Y2ggYSB3YXkgdGhhdCBubyBvbmV=
- 正向解码得 writing hidden messages in such a way that no one
- 反向再输入得IHdyaXRpbmcgaGlkZGVuIG1lc3NhZ2VzIGluIHN1Y2ggYSB3YXkgdGhhdCBubyBvbmU=
- 发现不一样,存在Base64信息隐藏
- then,打开cmd,打开文件所在路径输入python b64steg.py b64steg.txt a得到flag

- Base32
- 使用32个可见字符表示所有数据
- 把原始数据按5个字节为一组进行分割,再将每组的5个8比特数据切分为8个5比特数据,根据编码表,将5比特数据转换为对应字符
| 比较项目 | Base64 | Base32 |
|---|---|---|
| 索引表大小 | 64字符 | 32字符 |
| 标准索引表的顺序 | 大写字母、小写字母、数字、加号、斜杠 | 大写字母、数字(2~7) |
| 等号数量 | 0,1,2 | 0,1,3,4,6 |
| 信息隐藏规律 | 1个=(2B);2个=(4B); | 1个=(3B);3个=(1B);4个=(4B);6个=(2B); |
- Base16(HEX编码或十六进制编码)
- 使用16个可见字符表示所有数据
- 把原始数据按1个字节为一组进行分割,再将每组的8比特数据切分为2个4比特数据,根据编码表,将4比特数据转换为对应字符
- 本质:输出每个字节的十六进制表示,常用于哈希算法。
PS.还有Base58,Base62(URL),Base85(略);
有数字、字母(大小写的)试一试Base
- Shellcode
- 一段利用软件漏洞执行的代码,本质十六进制机器码,因攻击者可以通过其获得系统的shell而得名。
- 特征:每个字母前都‘’\x‘’
- 将每个字符转为ASCII码的十六进制表示前加‘’\x‘’
- 如ABCD→\x41\x42\x43\x44
- Quoted-printable编码
- 任何一个8位的字节值可编码为3个字符:一个等号”=”后跟随两个十六进制数字(0–9或A–F)表示该字节的数值.
- 例如,ASCII码换页符(十进制值为12)可以表示为”=0C”, 等号”=”(十进制值为61)必须表示为”=3D”.
- 除了可打印ASCII字符与换行符以外,所有字符必须表示为这种格式.
- 以中文 "你好" 为例:
-"你" 的 UTF-8 编码是0xE4 0xBD 0xA0,转换为=E4=BD=A0。
-"好" 的 UTF-8 编码是0xE5 0xA5 0xBD,转换为=E5=A5=BD。 - 可以用python输出
import quopri text = "你好,世界!"
encoded = quopri.encodestring(text.encode('utf-8')).decode('ascii') print(encoded)
# 输出: =E4=BD=A0=E5=A5=BD=EF=BC=8C=E4=B8=96=E7=95=8C=EF=BC=81
- UUencode
- 解码工具
- 特征:所有字符看起来像乱码,但都是可打印字符;如果多行,那么除了最后一行,都以“M”开头
- 例如
- hello world
- +:&5L;&@=V]R;&0
- XXencode
- 可以看作变形的Base64编码
- 每60个编码(相当于45个输入字节)将输出为独立的一行
- 每行的开头会加上长度字符,除了最后一行之外,每行的长度字符都应该是“h”这个字符(45,对应编码表中第45位h)。
- 最后一行的长度字符为剩下的字节数目在编码表中对应的字符。
- 特征 - 多行字符串时,除最后一行,每行开头为“h”
-经常以++或+结尾
-一行最大长度为4的倍数+1
- URL编码
- 常用的数字、字母可以直接用,特殊符号也可以直接用
- 在每个字节的ASCII编码的十六进制的字符前加%
- 例题:url.txt
- URL解码完,得到alf{gyrctprgopai_y_ssae}y,发现五个字符为一组,前三个倒序,后两个倒序。
- flag
- 摩斯密码
- 由"_" 和 "."构成,划的长度相当于三个点的长度
- 每个字符间短停顿用空格usually
- 词之间中等停顿usually“/”
- 例题:diff_Morse.txt(ZZZZ X XXZ ZZ ZXZ Z ZXZ ZX ZZX XXX XZXX XXZ ZX ZXZZ ZZXZ XX ZX ZZ)
- 将Z替换成‘’.‘’,X替换成‘’_‘’
- HTGIRERAUOYGALFMAI后逆置,得flag:IAMFLAGYOUARERIGHT
- [JSFuck](JSFuck - 编写任何 6 个字符的 JavaScript:[]()!+)
- 只有【】、()、!+六种字符
- 基于Java,可以在Node.JS上运行(打开浏览器,按F12打开界面,选择控制台console,复制代码,回车出结果)
- 例题:Shellcode.txt

- 喂给AI得flag
- Brainfuck
- 特征:5个一组,空格分开,开头有若干+
- 变形代码
- Ook!包含:Ook. Ook! Ook?
- Short Ook!包含:. ? !
- 例题:txt.txt(没做出来o(╥﹏╥)o)
- 解题通法
- Ciphey
- 安装教程
- ciphey -t "aGVsbG8gbXkgbmFtZSBpcyBiZWU="_
- CyberChef(9.32.3版本)里Magic功能的使用
- [自己想要的版本](Releases · gchq/CyberChef · GitHub)
- CyberChef魔法棒功能
- Ciphey

浙公网安备 33010602011771号