Sample Writeup — Formatting Reference (delete me)
On this page
Delete this file once you've published a couple of real writeups — it's only here to show you what's available.
Frontmatter fields
Every writeup lives in content/writeups/your-slug.md as one file. The block
at the top between --- lines controls the badges, case number, and card
preview:
| Field | Type | Notes |
|---|---|---|
title |
string | Shown as the H1 on the writeup page |
date |
YYYY-MM-DD |
Controls sort order and the CASE-### number |
ctf |
string | Name of the CTF or platform |
category |
web | pwn | crypto | rev | forensics | misc | osint |
Powers the filter buttons |
difficulty |
easy | medium | hard | insane |
Renders as the four-bar meter |
tags |
list of strings | Shown as #tags on the card |
summary |
string | The redacted excerpt on the case log |
status |
solved | wip |
Shown as the status dot |
The filename becomes the URL slug, and case numbers are assigned automatically in chronological order — you never set them by hand, so inserting an older writeup later will correctly renumber everything after it.
Code blocks
Fenced code blocks are syntax-highlighted automatically:
import requests
def get_flag(url: str) -> str:
r = requests.get(url, timeout=5)
return r.json()["flag"]
nmap -sV -p- -T4 10.10.10.5
Callouts
Use a blockquote for tips, warnings, or anything you want to visually set apart from the main walkthrough.
Lists
- Recon
- Identify the vulnerable parameter
- Exploit
- Capture the flag
- Burp Suite
curl+ jq- A notes file you actually keep updated
Images
Drop screenshots in /public/writeups/your-slug/ and reference them like
this:

Inline code and links
Reference a tool like sqlmap inline, or link out to a resource —
external links open safely by default.