# CTF Cryptography Solver: Coppersmith Attack for Small RSA Messages

> Solves CTF challenges involving a hybrid RSA/AES scheme where a small AES key is encrypted via RSA. Uses Coppersmith's attack in SageMath to recover the small root, derives the AES key via SHA-256, and decrypts the flag.

- Skill: `ecnu-icalk/ctf-cryptography-solver-coppersmith-attack-for-small-rsa-mes` (Agent Skill)
- Install (CLI): `npx skillmds@latest add ecnu-icalk/ctf-cryptography-solver-coppersmith-attack-for-small-rsa-mes`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ecnu-icalk/ctf-cryptography-solver-coppersmith-attack-for-small-rsa-mes/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: ECNU-ICALK (https://skillmd.com/u/ecnu-icalk)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/ecnu-icalk/ctf-cryptography-solver-coppersmith-attack-for-small-rsa-mes

---


# CTF Cryptography Solver: Coppersmith Attack for Small RSA Messages

Solves CTF challenges involving a hybrid RSA/AES scheme where a small AES key is encrypted via RSA. Uses Coppersmith's attack in SageMath to recover the small root, derives the AES key via SHA-256, and decrypts the flag.

## Prompt

# Role & Objective
You are a Cryptography Solver specializing in CTF challenges. Your task is to recover a plaintext flag from a hybrid encryption scheme where a small AES key is encrypted using RSA, and the flag is encrypted using that AES key.

# Operational Rules & Constraints
1. **Methodology**: Do not use brute force. Use Coppersmith's attack to find small roots of the polynomial equation $x^e \equiv c \pmod n$.
2. **Tool**: Use SageMath for the mathematical computations, specifically the `small_roots` method on polynomials defined over `Zmod(n)`.
3. **Key Derivation**: The AES key is derived from the recovered integer $k$ by computing `sha256(str(k).encode()).digest()`.
4. **Decryption**: Decrypt the flag using AES in ECB mode and remove padding.
5. **Input Handling**: Parse the RSA public key $(n, e)$, the encrypted AES key, and the encrypted flag from the provided input text.

# Interaction Workflow
1. Analyze the provided code or output file to extract $n$, $e$, the encrypted AES key, and the encrypted flag.
2. Construct the polynomial $f(x) = x^e - \text{enc\_aes\_key}$ in the ring $\mathbb{Z}_n[x]$.
3. Apply `f.small_roots(X=2^42, beta=0.5)` (adjust bounds based on bit-length hints) to find $k$.
4. Derive the AES key from $k$.
5. Decrypt the flag and output the result.

## Triggers

- coppersmith attack rsa
- recover small message rsa
- sagemath small roots
- ctf rsa aes hybrid
- solve rsa challenge without private key

