MISC_fist_编码

(基于CTF那些事)
1.分类
- 信息搜集
- 编码分析
- 隐写
- 网络流量分析
- 日志分析
- 电子取证
- and so on
2.离线解码工具
- koczkatamas
- CyberChef
PS.安装后,打开index.html使用,推荐用Chrome或Firefox
找到了一个纯纯的misc工具包,有需要的补
链接: https://pan.baidu.com/s/1ErtWZ9z1dnygLj7fjmYrAg 提取码: 1110

3.常见编码

  1. ASCII
    • 可打印字符的范围(0~31||127)
    • 不可打印字符的范围(32~126)
      -例题:ascii.txt(找flag)
      -用koczkatamas,复制文本粘贴到D/O/H,得flag
      assets/MISC_fist_编码/file-20250707223224205.png
  2. Base64
    • 把不可打印字符转换为可打印字符,不具有保密性、加密性
    • 使用64个可见字符表示所有数据
    • 原理:把原始数据按3个字节为一组进行分割,再将每组的3个8比特数据切分为4个6比特数据,根据编码表,将6比特数据转换为对应字符
    • 标准的Base64表顺序:大写、小写字母、+和/(没有=)
    • assets/MISC_fist_编码/file-20250707230611149.png
    • 以fla为例编出来为Zmxh(记住)
    • 可能出现信息隐藏,因为填充值不同,解码时会丢弃下划线部分再解码。
    • assets/MISC_fist_编码/file-20250707230534226.png
    • 例题:b64steg.txt
    • 根据带=的数据,例如第二行
    • IHdyaXRpbmcgaGlkZGVuIG1lc3NhZ2VzIGluIHN1Y2ggYSB3YXkgdGhhdCBubyBvbmV=
    • 正向解码得 writing hidden messages in such a way that no one
    • 反向再输入得IHdyaXRpbmcgaGlkZGVuIG1lc3NhZ2VzIGluIHN1Y2ggYSB3YXkgdGhhdCBubyBvbmU=
    • 发现不一样,存在Base64信息隐藏
    • then,打开cmd,打开文件所在路径输入python b64steg.py b64steg.txt a得到flag
    • assets/MISC_fist_编码/file-20250708120029241.png
  3. 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);
  1. Base16(HEX编码或十六进制编码)
    • 使用16个可见字符表示所有数据
    • 把原始数据按1个字节为一组进行分割,再将每组的8比特数据切分为2个4比特数据,根据编码表,将4比特数据转换为对应字符
    • 本质:输出每个字节的十六进制表示,常用于哈希算法。
      PS.还有Base58,Base62(URL),Base85(略);
      有数字、字母(大小写的)试一试Base
  2. Shellcode
    • 一段利用软件漏洞执行的代码,本质十六进制机器码,因攻击者可以通过其获得系统的shell而得名。
    • 特征:每个字母前都‘’\x‘’
    • 将每个字符转为ASCII码的十六进制表示前加‘’\x‘’
    • 如ABCD→\x41\x42\x43\x44
  3. 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
  1. UUencode
    • 解码工具
    • 特征:所有字符看起来像乱码,但都是可打印字符;如果多行,那么除了最后一行,都以“M”开头
    • 例如
    • hello world
    • +:&5L;&@=V]R;&0
  2. XXencode
    • 可以看作变形的Base64编码
    • 每60个编码(相当于45个输入字节)将输出为独立的一行
    • 每行的开头会加上长度字符,除了最后一行之外,每行的长度字符都应该是“h”这个字符(45,对应编码表中第45位h)。
    • 最后一行的长度字符为剩下的字节数目在编码表中对应的字符。
    • 特征 - 多行字符串时,除最后一行,每行开头为“h”
      -经常以++或+结尾
      -一行最大长度为4的倍数+1
  3. URL编码
    • 常用的数字、字母可以直接用,特殊符号也可以直接用
    • 在每个字节的ASCII编码的十六进制的字符前加%
    • 例题:url.txt
    • URL解码完,得到alf{gyrctprgopai_y_ssae}y,发现五个字符为一组,前三个倒序,后两个倒序。
    • flag
  4. 摩斯密码
    • 由"_" 和 "."构成,划的长度相当于三个点的长度
    • 每个字符间短停顿用空格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
  5. [JSFuck](JSFuck - 编写任何 6 个字符的 JavaScript:[]()!+)
    • 只有【】、()、!+六种字符
    • 基于Java,可以在Node.JS上运行(打开浏览器,按F12打开界面,选择控制台console,复制代码,回车出结果)
    • 例题:Shellcode.txt
    • assets/MISC_fist_编码/file-20250709092121745.png
    • 喂给AI得flag
  6. Brainfuck
    • 特征:5个一组,空格分开,开头有若干+
    • 变形代码
      • Ook!包含:Ook. Ook! Ook?
      • Short Ook!包含:. ? !
      • 例题:txt.txt(没做出来o(╥﹏╥)o)
  7. 解题通法
posted @ 2025-07-07 23:25  Nu0  阅读(63)  评论(0)    收藏  举报