CTF中常见的编码,代码混淆及加、解密
字数 1766 2025-08-18 11:38:32
CTF中常见的编码、代码混淆及加解密技术详解
一、编码与加密的基本概念
1. 编码与加密的区别
- 编码:将数据信息转化成一种固定格式的编码信息,目的是为了方便不同系统间的信息传输,通过编码可以得到原始信息
- 加密:为了保证信息传输的安全性,需要通过密钥才能还原原始信息
二、常见编码方式
1. ASCII编码
ASCII编码分为三部分:
- ASCII非打印控制字符(0-31)
- ASCII打印字符(32-126)
- 扩展ASCII打印字符(127-255)
示例:
easy → 101 97 115 121
2. URL编码(百分号编码)
编码规则:
- 在该字节ASCII码的16进制字符前面加%
- 如空格字符(ASCII 32,16进制'20')→ %20
示例:
https://baike.baidu.com/item/ABC →
%68%74%74%70%73%3A%2F%2F%62%61%69%6B%65%2E%62%61%69%64%75%2E%63%6F%6D%2F%69%74%65%6D%2F%41%42%43
3. HTML实体编码
格式:
&#十进制数;或&#x十六进制数;
示例:
easy → easy
4. Base家族编码
Base16
- 使用0-9和A-F共16个字符
Base32
- 使用大写字母A-Z和数字2-7
- 填充字符为"="
Base64
- 使用大小写字母A-Za-z、数字0-9以及"+"、"/"
- 填充字符为"="
- 示例:
easy → ZWFzeQ==
5. Unicode编码
四种编码方式:
源文本: The
&#x [Hex]: The
&# [Decimal]: The
\U [Hex]: \U0054\U0068\U0065
\U+ [Hex]: \U+0054\U+0068\U+0065
6. 莫尔斯电码
五种代码元素:
- 点(·)
- 划(-)
- 点和划之间的停顿
- 字符间短停顿
- 词间中等停顿
- 句子间长停顿
7. 其他编码
- 敲击码(Tap code)
三、代码混淆技术
1. JSFuck
- 仅使用6个字符
[ ] ( ) ! +编写JavaScript代码 - 示例网站:http://utf-8.jp/public/jsfuck.html
2. Brainfuck
- 仅使用8种符号
> < + - . , [ ] - 示例:
+++++ +++++ [->++ +++++ +++<] >++.+ +++++ ++..+ +++.< +++++ [->++ +++<] >++.+ +++++ +.+++ +++++ +++++ .<+++ [->-- -<]>- ----. ---.< +++++ +++++ +.<++ +[->+ ++<]> +++.<
- 在线工具:https://www.splitbrain.org/services/ook
3. VBScript.encode
- 针对ASP代码的加密混淆
- 在线工具:http://adophper.com/encode.html
4. Jjencode
- 将JS代码转换成只有符号的字符串
- 示例网站:http://utf-8.jp/public/aaencode.html
四、加密技术
1. 古典加密算法
(1) 凯撒密码
- 替换加密,字母按固定偏移量替换
- 示例(偏移量3):
ABCDE → DEFGH
(2) 栅栏密码
- 将明文分成N个一组,取每组第1个字连起来
- 示例:
明文: The quick brown fox jumps over the lazy dog
分组: Th eq ui ck br ow nf ox ju mp so ve rt he la zy do g
密文: Teucbonojmsvrhlzdghqikrwfxupoeteayo
(3) 培根密码
- 每个字母被5字符序列替换(A/B组成)
- 示例:
THE DOG → baabb aabbb aabaa aaabb abbba aabba
(4) 仿射密码
- 加密函数:(ax + b) mod m
- 要求gcd(a, m)=1,通常m=26
(5) 维吉尼亚密码
- 多表替换密码,使用密钥循环加密
- 在线解密:https://www.qqxiuzi.cn/bianma/weijiniyamima.php
- 示例:
明文: THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG
密钥: CULTURE
密文: VBP JOZGM VCHQE JQR UNGGW QPPK NYI NUKR XFK
2. 现代密码学
(1) 对称加密算法
- 流加密:每次加密数据流的一位或一个字节(如RC4)
- 分组加密:将明文分组加密(如DES, 3DES, AES)
- 典型分组大小:64bit或128bit
(2) Hash算法
- 常见算法:MD5、SHA-1
- 特点:不可逆,固定长度输出
- 用途:文件校验、数字签名、鉴权协议
(3) RSA算法
- 非对称加密算法
- 加密公式:密文 = 明文^E mod N
- 解密公式:明文 = 密文^D mod N
- 公钥:(E, N),私钥:(D, N)
RSA常见攻击方式:
- 利用RSA加密流程求参数
- 分解N求私钥:
- n<256bit:本地工具爆破
- n≥768bit:在线分解网站(如http://factordb.com)
- 多个n:求公约数找共同素因子
- p,q差异大或相近:使用yafu工具
- 共模攻击:相同模n加密相同明文m
五、实用工具资源
- 综合解密工具网站:http://ctf.ssleye.com/
- 密码学参考资料:
- 维基百科密码学:https://zh.wikipedia.org/zh-my/密码学
- 现代密码学原理与协议:http://archive.keyllo.com/L-编程/Code-现代密码学—原理与协议.pdf
六、安全团队信息
- Tide安全团队官网:http://www.TideSec.net
- 专注于网络攻防、Web安全、移动终端、安全开发、IoT/工控安全等方向