CTF密码学题目解题思路图
密码学题目
├── 1. 编码/转换
│ ├── 1.1 Base64
│ │ └── 步骤:检查填充字符(=),解码工具(CyberChef)。
│ ├── 1.2 Hex
│ │ └── 步骤:检查0-9a-f,转换为ASCII。
│ ├── 1.3 ASCII码
│ │ └── 步骤:十进制/十六进制转字符。
│ └── 1.4 其他编码(摩尔斯、URL等)
│ └── 步骤:识别符号(如.-/),使用专用解码器。
│
├── 2. 古典密码
│ ├── 2.1 替换密码
│ │ ├── 2.1.1 凯撒密码
│ │ │ └── 步骤:暴力尝试所有移位(0-25),或频率分析。
│ │ ├── 2.1.2 单表替换(ROT13/Atbash)
│ │ │ └── 步骤:ROT13直接转换,Atbash字母反向映射。
│ │ └── 2.1.3 维吉尼亚密码
│ │ └── 步骤:Kasiski测试确定密钥长度,频率分析猜密钥。
│ └── 2.2 置换密码
│ ├── 2.2.1 栅栏密码
│ │ └── 步骤:尝试不同栏数重组文本。
│ └── 2.2.2 列置换
│ └── 步骤:确定列顺序,按密钥排列。
│
├── 3. 现代密码
│ ├── 3.1 对称加密
│ │ ├── 3.1.1 AES
│ │ │ ├── ECB模式:检测重复块,利用已知明文。
│ │ │ └── CBC模式:需IV,尝试Padding Oracle攻击。
│ │ └── 3.1.2 DES/3DES
│ │ └── 步骤:已知密钥解密或弱密钥攻击。
│ └── 3.2 非对称加密
│ ├── 3.2.1 RSA
│ │ ├── 小n分解:使用factordb/yafu分解n。
│ │ ├── 共模攻击:相同n不同e,扩展欧几里得求m。
│ │ ├── 小e攻击:直接开e次方(如e=3)。
│ │ └── Wiener攻击:d较小时利用连分数分解。
│ └── 3.2.2 椭圆曲线(ECC)
│ └── 步骤:利用参数漏洞或异常曲线。
│
├── 4. 哈希算法
│ ├── 4.1 已知哈希(MD5/SHA1)
│ │ └── 步骤:查彩虹表或爆破(John the Ripper)。
│ └── 4.2 加盐哈希
│ └── 步骤:提取盐值,组合字典爆破。
│
└── 5. 数学问题
├── 5.1 因数分解
│ └── 步骤:Pollard's算法或利用特殊结构(如相近素数)。
├── 5.2 离散对数
│ └── 步骤:Pohlig-Hellman或BSGS算法。
└── 5.3 LFSR
└── 步骤:Berlekamp-Massey算法恢复初始状态。
工具推荐
- 编码/古典密码:CyberChef、quipqiup.com(自动替换密码分析)。
- RSA:RsaCtfTool、sageMath。
- 哈希破解:Hashcat、John the Ripper。
- 数学计算:Python脚本、Wolfram Alpha。