Attack to defend
Security in Go
Go is the language of modern security tooling — static binaries, cheap concurrency, and a strong crypto stdlib. This track teaches how attacks work so you can stop them: recon and scanning, fuzzing and packet analysis, cryptography done right, and secure coding from injection defense to the supply chain. Offensive techniques are educational and lab-scoped, always paired with the defense.
⚠️ Authorized testing only
Everything offensive here is for systems you own or have written permission to test — a home lab, a CTF, or an engagement with a signed scope. Scanning, probing, or attacking systems you don't control is illegal in most jurisdictions. Learn the techniques to build defenses, not to cause harm.
Mark a topic “learned” on its page and watch the bars fill.
Skill map
Learned nodes light up — the glowing one is your next step. Click any node to jump in.
Security Foundations
The mindset before the tools — why Go is the language of modern security tooling, the rules of authorized testing, and how to build and ship a tool responsibly.
Why Go became the language of security tooling — static binaries that drop anywhere, cheap concurrency for scanners, and a crypto/net standard library that covers most of what a tool needs.
✦ Complete · ⏱ 5 min 2 · Beginner The Security Mindset & Authorized TestingThe rules of the game — authorization and scope, threat modeling, defense in depth, assume-breach thinking, and responsible disclosure. The line between a professional and a criminal is permission.
✦ Complete · ⏱ 5 min 3 · Intermediate Building Security ToolsThe anatomy of a Go security tool — static cross-compiled builds, stripped binaries, embedded assets, and a concurrent worker-pool skeleton with rate limiting and structured logging you can reuse for any scanner.
✦ Complete · ⏱ 6 minRecon & Offensive Testing
How attacks actually work, so you can defend against them — port scanning, DNS and HTTP reconnaissance, fuzzing for bugs, and reading raw packets. Lab-scoped and defense-paired.
How a TCP connect scanner works and why Go is ideal for it — a bounded concurrent scanner, banner grabbing for service detection, and the defenses (rate limits, detection, least exposure) that stop it.
✦ Complete · ⏱ 5 min 4.5 · Intermediate Network Recon & Service DetectionTurning open ports into a picture of a network — service and version detection, OS fingerprinting, banner analysis, and assembling a recon report — plus the defenses that reveal less.
✦ Complete · ⏱ 5 min 5 · Intermediate DNS EnumerationMapping a target's attack surface through DNS — record types and lookups, concurrent subdomain brute-forcing, zone transfers as a misconfiguration, and the defenses that limit what DNS reveals.
✦ Complete · ⏱ 5 min 6 · Intermediate HTTP ReconnaissanceProfiling web targets in Go — a custom HTTP client, fingerprinting tech from headers, content and path discovery, and the response-hardening defenses (security headers, generic errors, rate limits) that blunt it.
✦ Complete · ⏱ 5 min 7 · Advanced Fuzzing for BugsFinding crashes and vulnerabilities by feeding malformed input — a runnable mutation fuzzer that discovers a parser bug, Go's built-in coverage-guided fuzzing, and why fuzzing your own code is the best defense.
✦ Complete · ⏱ 5 min 8 · Advanced Packet AnalysisReading the wire — parsing IP/TCP headers from raw bytes by hand, live capture with gopacket, and using packet analysis defensively for intrusion detection and anomaly monitoring.
✦ Complete · ⏱ 4 minCryptography
Go's crypto toolkit done right — hashing and password storage, authenticated symmetric encryption, TLS and PKI, and the classic mistakes that break weak crypto.
Storing secrets the right way — hashing vs encryption vs encoding, why fast hashes are wrong for passwords, salts, and the slow KDFs (bcrypt, scrypt, argon2id) that actually protect credentials.
✦ Complete · ⏱ 6 min 10 · Intermediate Symmetric EncryptionKeeping data confidential with one shared key — why you reach for authenticated encryption (AES-GCM), the absolute rule of nonce uniqueness, and the broken modes (ECB) you must never use.
✦ Complete · ⏱ 5 min 11 · Intermediate TLS & PKIHow strangers establish trust on the internet — the TLS handshake, certificates and the chain of trust, certificate transparency, and mutual TLS — with runnable Go cert generation and verification.
✦ Complete · ⏱ 5 min 12 · Advanced Attacking Weak CryptoHow good algorithms get broken by bad usage — dictionary attacks on fast hashes, ECB pattern leakage, nonce reuse, hardcoded keys, weak randomness, and timing side-channels — and how to avoid each.
✦ Complete · ⏱ 5 minDefensive Engineering
Writing software that resists attack — input validation and injection defense, authentication and authorization, secrets management, and securing the supply chain.
The industry's reference list of the most critical web app security risks — what each category means, how it shows up in Go, and the defensive habit that neutralizes it.
✦ Complete · ⏱ 4 min 13 · Intermediate Input Validation & Injection DefenseThe bug class behind most breaches — why injection happens (mixing data with code), and the structural fixes: parameterized queries, html/template auto-escaping, allowlist validation, and safe path handling.
✦ Complete · ⏱ 6 min 13.5 · Intermediate SSRF & Request ForgeryServer-Side Request Forgery and its cousin CSRF — how an attacker turns your server (or your user's browser) into a confused deputy, and the allowlist / token defenses in Go.
✦ Complete · ⏱ 4 min 14 · Intermediate Authentication & AuthorizationProving who you are and deciding what you may do — sessions vs tokens, secure token generation and constant-time checks, password verification, and least-privilege authorization (RBAC).
✦ Complete · ⏱ 5 min 14.5 · Intermediate OAuth 2.0 & OpenID ConnectDelegated authorization (OAuth2) vs authentication (OIDC) — the Authorization Code + PKCE flow, access vs ID tokens, and the mistakes that turn 'sign in with…' into account takeover.
✦ Complete · ⏱ 4 min 15 · Intermediate Secrets ManagementKeeping API keys, passwords, and signing keys out of your code, repo, logs, and binary — config from the environment, secret managers, redaction, and rotation.
✦ Complete · ⏱ 4 min 16 · Intermediate Hardening HTTP ServicesTurning a working Go server into a hardened one — timeouts and body limits against resource exhaustion, security headers, panic-recovery and rate-limiting middleware, and graceful shutdown.
✦ Complete · ⏱ 5 min 16.5 · Intermediate Container Image SecurityShipping a Go binary in a container that's small and hard to attack — minimal/distrolesse base images, non-root, pinned-by-digest, scanned, and the content-addressing that makes 'pinning' real.
✦ Complete · ⏱ 4 min 17 · Advanced Supply-Chain SecuritySecuring everything your code depends on — module integrity via go.sum and the checksum database, govulncheck for known CVEs, minimizing dependencies, pinning, and defending against typosquatting and build-time attacks.
✦ Complete · ⏱ 5 min🐹 Why Go is the security industry's favorite
A single static binary that cross-compiles to any target, drops onto a box with no dependencies, and
runs hundreds of concurrent connections cheaply — that's exactly what both red teams and blue teams
want. From scanners and fuzzers to TLS servers and detection pipelines, Go's stdlib (net,
crypto, encoding) covers most of what a security tool needs out of the box.