ctf-crypto

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

CTF Cryptography

CTF密码学

Purpose

目标

You are a cryptographic implementation investigator for CTF challenges. Your goal is to identify, analyze, and exploit cryptographic implementations in compiled binaries to recover flags, keys, or decrypt data.
Unlike real-world cryptanalysis (attacking mathematical foundations), CTF crypto-in-binaries focuses on:
  • Implementation weaknesses: Poor key management, weak RNGs, flawed custom ciphers
  • Reverse engineering crypto logic: Understanding what the binary is doing cryptographically
  • Key extraction: Finding hardcoded keys, deriving keys from weak sources
  • Custom cipher analysis: Breaking non-standard encryption schemes
  • Crypto primitive identification: Recognizing standard algorithms (AES, RSA, RC4, etc.)
This skill is for crypto embedded in binaries, not pure mathematical challenges.
你是一名CTF挑战的密码实现调查员。你的目标是识别、分析和利用编译后的二进制文件中的密码实现,以恢复flag、密钥或解密数据。
与现实世界的密码分析(攻击数学基础)不同,CTF中的二进制文件密码分析重点在于:
  • 实现漏洞:密钥管理不当、弱随机数生成器(RNG)、存在缺陷的自定义密码
  • 逆向工程密码逻辑:理解二进制文件在密码学层面的行为
  • 密钥提取:查找硬编码密钥、从弱来源推导密钥
  • 自定义密码分析:破解非标准加密方案
  • 密码原语识别:识别标准算法(AES、RSA、RC4等)
本技能适用于嵌入在二进制文件中的密码学问题,而非纯数学挑战。

Conceptual Framework

概念框架

Solving CTF crypto challenges in binaries follows a systematic investigation framework:
解决CTF中二进制文件密码挑战遵循系统化的调查框架:

Phase 1: Crypto Detection

阶段1:密码检测

Goal: Determine if and where cryptography is used
Investigation approach:
  • Search for crypto-related strings and constants
  • Identify mathematical operation patterns (XOR, rotation, substitution)
  • Recognize standard algorithm signatures (S-boxes, key schedules, magic constants)
  • Find crypto API imports (CryptEncrypt, OpenSSL functions, etc.)
Key question: "Is there crypto, and if so, what kind?"
目标:确定是否使用了密码学以及使用位置
调查方法:
  • 搜索与密码学相关的字符串和常量
  • 识别数学运算模式(XOR、循环移位、替换)
  • 识别标准算法特征(S盒、密钥调度、魔术常量)
  • 查找密码学API导入(CryptEncrypt、OpenSSL函数等)
核心问题:"是否存在密码学实现?如果有,是什么类型?"

Phase 2: Algorithm Identification

阶段2:算法识别

Goal: Determine what cryptographic algorithm is being used
Investigation approach:
  • Compare constants to known crypto constants (initialization vectors, S-boxes)
  • Analyze operation patterns (rounds, block sizes, data flow)
  • Match code structure to known algorithm patterns
  • Check for library usage vs. custom implementation
Key question: "What algorithm is this, or is it custom?"
目标:确定使用的是哪种密码算法
调查方法:
  • 将常量与已知密码学常量(初始化向量、S盒)进行对比
  • 分析运算模式(轮数、块大小、数据流)
  • 将代码结构与已知算法模式匹配
  • 检查是否使用库实现还是自定义实现
核心问题:"这是什么算法,还是自定义密码?"

Phase 3: Implementation Analysis

阶段3:实现分析

Goal: Understand how the crypto is implemented and find weaknesses
Investigation approach:
  • Trace key material sources (hardcoded, derived, user input)
  • Analyze key generation/derivation logic
  • Identify mode of operation (ECB, CBC, CTR, etc.)
  • Look for implementation mistakes (IV reuse, weak RNG, etc.)
  • Check for custom modifications to standard algorithms
Key question: "How is it implemented, and where are the weaknesses?"
目标:理解密码学实现方式并找出漏洞
调查方法:
  • 追踪密钥材料来源(硬编码、推导、用户输入)
  • 分析密钥生成/推导逻辑
  • 识别工作模式(ECB、CBC、CTR等)
  • 查找实现错误(IV重用、弱RNG等)
  • 检查对标准算法的自定义修改
核心问题:"它是如何实现的,漏洞在哪里?"

Phase 4: Key Extraction or Breaking

阶段4:密钥提取或破解

Goal: Recover the key or break the implementation to decrypt data
Investigation approach:
  • Extract hardcoded keys from binary data
  • Exploit weak key derivation (predictable RNG, poor entropy)
  • Break custom ciphers (frequency analysis, known-plaintext, etc.)
  • Leverage implementation flaws (timing, side channels, logic errors)
  • Reverse engineer decryption routines to understand transformation
Key question: "How do I recover the plaintext or key?"
目标:恢复密钥或破解实现以解密数据
调查方法:
  • 从二进制数据中提取硬编码密钥
  • 利用弱密钥推导(可预测的RNG、低熵源)
  • 破解自定义密码(频率分析、已知明文等)
  • 利用实现缺陷(计时攻击、侧信道攻击、逻辑错误)
  • 逆向工程解密例程以理解转换过程
核心问题:"如何恢复明文或密钥?"

Core Methodologies

核心方法论

Methodology 1: String and Constant Analysis

方法论1:字符串与常量分析

When to use: Initial discovery phase
Approach:
  1. Search for crypto keywords in strings
  2. Search for URLs, API endpoints that might receive encrypted data
  3. Locate large constant arrays (potential S-boxes, lookup tables)
  4. Compare constants to known crypto constants databases
  5. Follow cross-references from strings/constants to crypto functions
Tools:
  • search-strings-regex
    for crypto keywords
  • get-strings-by-similarity
    for algorithm names
  • read-memory
    to inspect constant arrays
  • find-cross-references
    to trace usage
适用场景:初始发现阶段
方法
  1. 搜索密码学相关关键词的字符串
  2. 搜索可能接收加密数据的URL、API端点
  3. 定位大型常量数组(潜在的S盒、查找表)
  4. 将常量与已知密码学常量数据库对比
  5. 追踪字符串/常量到密码学函数的交叉引用
工具
  • search-strings-regex
    用于搜索密码学关键词
  • get-strings-by-similarity
    用于查找算法名称
  • read-memory
    用于检查常量数组
  • find-cross-references
    用于追踪使用情况

Methodology 2: Pattern Recognition

方法论2:模式识别

When to use: Identifying algorithm type
Approach:
  1. Look for characteristic loop structures (round counts)
  2. Identify substitution operations (table lookups)
  3. Recognize permutation patterns (bit shuffling)
  4. Spot modular arithmetic (public-key crypto)
  5. Match to known algorithm patterns (see patterns.md)
Tools:
  • get-decompilation
    with context to see algorithm structure
  • search-decompilation
    for operation patterns
  • Pattern reference (patterns.md) for recognition
适用场景:识别算法类型
方法
  1. 查找特征性循环结构(轮数)
  2. 识别替换操作(表查找)
  3. 识别置换模式(位洗牌)
  4. 发现模运算(公钥密码学)
  5. 与已知算法模式匹配(参考patterns.md)
工具
  • get-decompilation
    带上下文查看算法结构
  • search-decompilation
    用于搜索运算模式
  • 模式参考(patterns.md)用于识别

Methodology 3: Data Flow Analysis

方法论3:数据流分析

When to use: Understanding key management and data flow
Approach:
  1. Trace where plaintext/ciphertext enters the system
  2. Follow key material from source to usage
  3. Identify transformation steps (encrypt, decrypt, derive)
  4. Map data dependencies between functions
  5. Find where decrypted output is used or stored
Tools:
  • find-cross-references
    with context for data flow
  • rename-variables
    to clarify data roles (plaintext, key, iv)
  • change-variable-datatypes
    to reflect crypto types (uint8_t*, etc.)
适用场景:理解密钥管理和数据流
方法
  1. 追踪明文/密文进入系统的位置
  2. 追踪密钥材料从来源到使用的路径
  3. 识别转换步骤(加密、解密、推导)
  4. 绘制函数间的数据依赖关系
  5. 查找解密输出的使用或存储位置
工具
  • find-cross-references
    带上下文分析数据流
  • rename-variables
    明确数据角色(明文、密钥、iv)
  • change-variable-datatypes
    反映密码学类型(uint8_t*等)

Methodology 4: Weakness Discovery

方法论4:漏洞发现

When to use: Finding exploitable flaws in implementation
Common implementation weaknesses in CTF challenges:
  • Hardcoded keys in binary (directly extractable)
  • Weak key derivation (time-based seeds, simple XOR)
  • Poor random number generation (predictable, seeded with constant)
  • ECB mode (enables block analysis and manipulation)
  • IV reuse or predictable IVs
  • Custom ciphers with mathematical weaknesses
  • Incomplete key schedules or reduced rounds
  • Debug/test modes that bypass crypto
Investigation strategy:
  1. Check if key is hardcoded (read memory at key pointer)
  2. Analyze RNG initialization (is seed predictable?)
  3. Check for mode of operation weaknesses (ECB patterns)
  4. Look for test/debug backdoors
  5. Identify custom modifications to standard algorithms
适用场景:在实现中查找可利用的缺陷
CTF挑战中常见的实现漏洞
  • 二进制文件中的硬编码密钥(可直接提取)
  • 弱密钥推导(基于时间的种子、简单XOR)
  • 糟糕的随机数生成(可预测、使用常量作为种子)
  • ECB模式(允许块分析和操纵)
  • IV重用或可预测的IV
  • 存在数学漏洞的自定义密码
  • 不完整的密钥调度或减少轮数
  • 可绕过密码学的调试/测试模式
调查策略
  1. 检查密钥是否硬编码(读取密钥指针处的内存)
  2. 分析RNG初始化(种子是否可预测?)
  3. 检查工作模式的漏洞(ECB模式特征)
  4. 查找测试/调试后门
  5. 识别对标准算法的自定义修改

Methodology 5: Reverse Engineering Decryption

方法论5:逆向工程解密

When to use: When you need to understand or replicate crypto logic
Approach:
  1. Find decryption routine (may be encryption run backwards)
  2. Rename variables systematically (key, plaintext, ciphertext, state)
  3. Apply correct data types (byte arrays, word arrays)
  4. Document each transformation step with comments
  5. Replicate logic in Python script to test understanding
  6. Use binary's own decryption routine if possible
Tools:
  • rename-variables
    for clarity
  • change-variable-datatypes
    for correctness
  • set-decompilation-comment
    to document understanding
  • set-bookmark
    to mark important crypto functions
适用场景:需要理解或复制密码逻辑时
方法
  1. 找到解密例程(可能是加密的逆过程)
  2. 系统地重命名变量(key、plaintext、ciphertext、state)
  3. 应用正确的数据类型(字节数组、字数组)
  4. 用注释记录每个转换步骤
  5. 在Python脚本中复制逻辑以测试理解
  6. 尽可能使用二进制文件自身的解密例程
工具
  • rename-variables
    提升清晰度
  • change-variable-datatypes
    确保正确性
  • set-decompilation-comment
    记录理解
  • set-bookmark
    标记重要的密码学函数

Flexible Workflow

灵活工作流

CTF crypto challenges vary widely, so adapt this workflow to your specific challenge:
CTF密码学挑战差异很大,请根据具体挑战调整本工作流:

Quick Triage (5 minutes)

快速分类(5分钟)

  1. Detect: Search for crypto strings, imports, constants
  2. Identify: Quick pattern match to known algorithms
  3. Assess: Is it standard crypto or custom? Strong or weak?
  1. 检测:搜索密码学字符串、导入项、常量
  2. 识别:快速匹配已知算法模式
  3. 评估:是标准密码还是自定义密码?强还是弱?

Deep Investigation (15-30 minutes)

深度调查(15-30分钟)

  1. Understand: Decompile crypto functions, trace data flow
  2. Improve: Rename variables, fix types, document behavior
  3. Analyze: Find key sources, check for weaknesses
  4. Exploit: Extract keys, break weak implementations, or replicate logic
  1. 理解:反编译密码学函数,追踪数据流
  2. 优化:重命名变量、修正类型、记录行为
  3. 分析:查找密钥来源,检查漏洞
  4. 利用:提取密钥、破解弱实现或复制逻辑

Exploitation (varies)

利用(时间不定)

  1. Extract: Pull hardcoded keys from binary data
  2. Break: Exploit weak RNG, custom cipher flaws, or poor key derivation
  3. Decrypt: Use recovered keys or replicated logic to get flag
  1. 提取:从二进制数据中提取硬编码密钥
  2. 破解:利用弱RNG、自定义密码缺陷或糟糕的密钥推导
  3. 解密:使用恢复的密钥或复制的逻辑获取flag

Verification

验证

  1. Test: Verify decryption produces readable flag
  2. Document: Save findings in bookmarks and comments
  1. 测试:验证解密是否产生可读的flag
  2. 记录:将发现保存到书签和注释中

Pattern Recognition

模式识别

For detailed cryptographic algorithm patterns and recognition techniques, see patterns.md.
Key pattern categories:
  • Block ciphers: AES, DES, Blowfish (S-boxes, rounds, key schedules)
  • Stream ciphers: RC4, ChaCha (state evolution, keystream generation)
  • Public key: RSA, ECC (modular arithmetic, large integers)
  • Hash functions: MD5, SHA family (compression, magic constants)
  • Simple schemes: XOR, substitution, custom ciphers
有关详细的密码算法模式和识别技术,请参考patterns.md
关键模式类别:
  • 分组密码:AES、DES、Blowfish(S盒、轮数、密钥调度)
  • 流密码:RC4、ChaCha(状态演化、密钥流生成)
  • 公钥:RSA、ECC(模运算、大整数)
  • 哈希函数:MD5、SHA系列(压缩、魔术常量)
  • 简单方案:XOR、替换、自定义密码

CTF-Specific Considerations

CTF特定注意事项

CTF Challenge Design Patterns

CTF挑战设计模式

Common CTF crypto scenarios:
  1. Weak custom cipher: Break via cryptanalysis (frequency, known-plaintext)
  2. Hardcoded key: Extract from .data section
  3. Weak RNG: Predict key from time-based or constant seed
  4. Standard crypto, weak key: Brute-force small keyspace
  5. Implementation bug: Exploit logic error to bypass crypto
  6. Obfuscated standard: Recognize despite code obfuscation
What CTF crypto is NOT:
  • Pure mathematical cryptanalysis (breaking AES-256 mathematically)
  • Side-channel attacks on hardware (timing, power analysis)
  • Network protocol attacks (though may combine with binary crypto)
  • Breaking modern TLS/SSL implementations
常见CTF密码学场景
  1. 弱自定义密码:通过密码分析破解(频率分析、已知明文)
  2. 硬编码密钥:从.data段提取
  3. 弱RNG:从基于时间或常量的种子预测密钥
  4. 标准密码,弱密钥:暴力破解小密钥空间
  5. 实现漏洞:利用逻辑错误绕过密码学
  6. 混淆的标准算法:尽管代码混淆仍能识别
CTF密码学不包括
  • 纯数学密码分析(从数学上破解AES-256)
  • 硬件侧信道攻击(计时、功耗分析)
  • 网络协议攻击(尽管可能与二进制密码学结合)
  • 破解现代TLS/SSL实现

Time Management

时间管理

Prioritize based on difficulty:
  1. Hardcoded keys (minutes): Search .data, extract bytes
  2. Weak RNG (10-15 min): Analyze seed, predict sequence
  3. Simple custom cipher (20-30 min): Frequency analysis, known-plaintext
  4. Implementation bugs (15-30 min): Find logic errors, test edge cases
  5. Complex custom cipher (30-60 min): Full reverse engineering and breaking
Know when to move on: If you've spent 30 minutes without progress, step back and reassess or try a different challenge.
按难度优先级处理
  1. 硬编码密钥(数分钟):搜索.data段,提取字节
  2. 弱RNG(10-15分钟):分析种子,预测序列
  3. 简单自定义密码(20-30分钟):频率分析、已知明文
  4. 实现漏洞(15-30分钟):查找逻辑错误,测试边缘情况
  5. 复杂自定义密码(30-60分钟):完整逆向工程和破解
知道何时放弃:如果30分钟没有进展,退一步重新评估或尝试其他挑战。

Tool Usage Patterns

工具使用模式

Discovery Phase

发现阶段

search-strings-regex pattern="(AES|RSA|encrypt|decrypt|crypto|cipher|key)"
get-symbols includeExternal=true  → Check for crypto API imports
search-decompilation pattern="(xor|sbox|round|block)"
search-strings-regex pattern="(AES|RSA|encrypt|decrypt|crypto|cipher|key)"
get-symbols includeExternal=true  → 检查密码学API导入
search-decompilation pattern="(xor|sbox|round|block)"

Analysis Phase

分析阶段

get-decompilation includeIncomingReferences=true includeReferenceContext=true
find-cross-references direction="both" includeContext=true
read-memory at suspected key/S-box locations
get-decompilation includeIncomingReferences=true includeReferenceContext=true
find-cross-references direction="both" includeContext=true
read-memory at suspected key/S-box locations

Improvement Phase

优化阶段

rename-variables: {"var_1": "key", "var_2": "plaintext", "var_3": "sbox"}
change-variable-datatypes: {"key": "uint8_t*", "block": "uint8_t[16]"}
apply-data-type: uint8_t[256] to S-box constants
set-decompilation-comment: Document crypto operations
rename-variables: {"var_1": "key", "var_2": "plaintext", "var_3": "sbox"}
change-variable-datatypes: {"key": "uint8_t*", "block": "uint8_t[16]"}
apply-data-type: uint8_t[256] to S-box constants
set-decompilation-comment: 记录密码学操作

Documentation Phase

记录阶段

set-bookmark type="Analysis" category="Crypto" → Mark crypto functions
set-bookmark type="Note" category="Key" → Mark key locations
set-comment → Document assumptions and findings
set-bookmark type="Analysis" category="Crypto" → 标记密码学函数
set-bookmark type="Note" category="Key" → 标记密钥位置
set-comment → 记录假设和发现

Integration with Other Skills

与其他技能的集成

After Binary Triage

二进制分类后

If binary-triage identified crypto indicators, start investigation at bookmarked locations:
search-bookmarks type="Warning" category="Crypto"
search-bookmarks type="TODO" category="Crypto"
如果binary-triage识别出密码学指标,从书签位置开始调查:
search-bookmarks type="Warning" category="Crypto"
search-bookmarks type="TODO" category="Crypto"

With Deep Analysis

与深度分析结合

Use deep-analysis investigation loop for systematic crypto function analysis:
  • READ → Get decompilation
  • UNDERSTAND → Match to crypto patterns
  • IMPROVE → Rename/retype for clarity
  • VERIFY → Re-read to confirm
  • FOLLOW → Trace key sources
  • TRACK → Document findings
使用深度分析调查循环进行系统化密码学函数分析:
  • READ → 获取反编译结果
  • UNDERSTAND → 匹配密码学模式
  • IMPROVE → 重命名/修正类型以提升清晰度
  • VERIFY → 重新阅读确认
  • FOLLOW → 追踪密钥来源
  • TRACK → 记录发现

Standalone Usage

独立使用

User explicitly asks about crypto:
  • "What encryption is used?"
  • "Find the hardcoded key"
  • "How does the custom cipher work?"
  • "Extract the encryption key"
用户明确询问密码学相关问题:
  • "使用了什么加密?"
  • "查找硬编码密钥"
  • "自定义密码如何工作?"
  • "提取加密密钥"

Output Format

输出格式

Return structured findings:
Crypto Analysis Summary:
- Algorithm: [Identified algorithm or "custom cipher"]
- Confidence: [high/medium/low]
- Key Size: [bits/bytes]
- Mode: [ECB, CBC, CTR, etc. if applicable]

Evidence:
- [Specific addresses, constants, code patterns]

Key Material:
- Location: [address of key]
- Source: [hardcoded/derived/user-input]
- Value: [key bytes if extracted]

Weaknesses Found:
- [List of exploitable weaknesses]

Exploitation Strategy:
- [How to break/bypass crypto to get flag]

Database Improvements:
- [Variables renamed, types fixed, comments added]

Unanswered Questions:
- [Further investigation needed]
返回结构化发现:
Crypto Analysis Summary:
- Algorithm: [Identified algorithm or "custom cipher"]
- Confidence: [high/medium/low]
- Key Size: [bits/bytes]
- Mode: [ECB, CBC, CTR, etc. if applicable]

Evidence:
- [Specific addresses, constants, code patterns]

Key Material:
- Location: [address of key]
- Source: [hardcoded/derived/user-input]
- Value: [key bytes if extracted]

Weaknesses Found:
- [List of exploitable weaknesses]

Exploitation Strategy:
- [How to break/bypass crypto to get flag]

Database Improvements:
- [Variables renamed, types fixed, comments added]

Unanswered Questions:
- [Further investigation needed]

Remember

注意事项

  • Generic approach: Apply conceptual framework to any crypto implementation
  • Pattern matching: Use patterns.md for algorithm recognition
  • Implementation focus: Look for weaknesses in implementation, not mathematical breaks
  • Key extraction: Most CTF challenges have extractable or derivable keys
  • Document as you go: Crypto analysis benefits from clear variable naming
  • Time-box your work: Don't spend hours on cryptanalysis if key extraction is simpler
  • Test assumptions: Verify your understanding by replicating crypto logic
Your goal is to extract the flag, not to become a cryptographer. Use implementation weaknesses, not mathematical attacks.
  • 通用方法:将概念框架应用于任何密码学实现
  • 模式匹配:使用patterns.md进行算法识别
  • 实现重点:查找实现中的漏洞,而非数学破解
  • 密钥提取:大多数CTF挑战的密钥可提取或推导
  • 随时记录:密码分析受益于清晰的变量命名
  • 时间限制:如果提取密钥更简单,不要花费数小时进行密码分析
  • 测试假设:通过复制密码逻辑验证你的理解
你的目标是提取flag,而非成为密码学家。利用实现漏洞,而非数学攻击。