Old Paper
Follow an HTML comment and a robots.txt clue to uncover a retired archive note.
- Reconnaissance
- HTML source
- robots.txt
CTF FIELD NOTES
Challenge write-ups across web security, cryptography, binary exploitation, reverse engineering, forensics and more. A record of the approach, the details that mattered and the lessons to carry forward.
All 30 write-ups are shown below. Use your browser’s Find option to search by challenge or topic.
Follow an HTML comment and a robots.txt clue to uncover a retired archive note.
Trace a one-column SQLite search into a UNION-based SQL injection and recover the hidden record.
Use a leaked invoice reference to examine a missing object-level authorization check.
Read the JWT verification routine and identify a signature bypass through an unverified algorithm.
Investigate Jinja2 template injection and compare the access forms accepted by the challenge.
Recover a Caesar shift from the known flag prefix while leaving punctuation and digits intact.
Recover a reused one-time-pad keystream from a known dispatch and decode a second message.
Factor two RSA moduli with a shared prime using a greatest-common-divisor calculation.
Use a zero-plaintext edit to recover the keystream of an AES-CTR encrypted memo.
Recover a DSA private key from reused-nonce signatures, verify it, and decode the sealed message.
Turn a 16-bit ticket-total truncation into a modular inverse problem.
Recover flag bytes from variadic arguments exposed by an uncontrolled printf format string.
Analyze the challenge’s stack layout and redirect a saved return address to the reward function.
Follow a dangling heap pointer and the observed allocation reuse to replace a badge’s fields.
Build a small ROP chain that supplies two arguments to the vault function.
Read an ELF checker’s disassembly and invert its bytewise XOR comparison.
Reverse a byte transformation that combines a rotation, an XOR, and an index-dependent value.
Decode a custom virtual machine’s instruction set and reconstruct the input checked by its bytecode.
Inspect a WebAssembly module’s data and check routine to recover its expected input.
Model the checker as modular linear equations and reconstruct its 37-byte input.
Find a ZIP archive appended after a PNG’s IEND chunk, carve it, and decode its message.
Filter a transfer from noisy logs and reassemble its Base64 chunks by sequence number.
Reassemble numbered DNS query labels after removing retries and background traffic.
Recover a hidden message from an image’s red-channel bits and a four-byte length header.
Inspect SQLite free pages and recover a deleted dispatch envelope from the database bytes.
Filter a fictional campus archive by room and time, then select the latest revision for each seal.
Follow magic bytes through gzip, Base64, bzip2, and ZIP layers to reach the final dispatch.
Inspect an audio signal, decode its Morse timing, and recover the Base32 message it spells.
Correct single-bit errors in Hamming(7,4) codewords and reconstruct the transmitted bytes.
Find the cheapest directed route with Dijkstra’s algorithm and join its edge labels.