Trusted by teams at
Application security for developers
Five hands-on tracks in a simulated workstation. Exploit a real bug on the surface your team actually ships, then write the fix yourself.
$ login --user admin password: [ok] authenticated 1,284 rows exfiltrated
A single quote in a lookup form empties the customer table.
// concatenated input query(`... id = ${id}`) ✗ // parameterized query('... id = ?', [id]) ✓
Bind user input as a parameter and the quote stays data, never code.
$ GET /api/trips/50318 retry: 200 OK · rider_id 8814 another rider's receipts
Change one id in the path and the API hands over another rider’s trips.
// authenticated, not authorized return db.trip(req.params.id) ✗ // check the object owner if (trip.riderId !== me) return 403 ✓
Authentication proves who is calling. Only an owner check proves they may.
$ git log --all -p grep: commit 9f8e7d6 live key, deleted at HEAD
The key is gone from HEAD and still live three commits back.
// removed in a later commit git rm config/secrets.js ✗ // rotate first, then rewrite git filter-repo --invert-paths ✓
Rotate the credential first. A history rewrite alone does not un-leak it.
$ docker history checkout-api:1.4.2 layer: sha256:9c1f4e7a · 184 MB secret readable in the layer
Anyone who can pull the image can read the layer that built it.
// baked into the image ENV STRIPE_KEY=sk_live_... ✗ // mounted, never committed RUN --mount=type=secret,id=stripe ✓
A BuildKit secret mount lets the build read a value it never stores.
$ aws s3 ls --no-sign-request bucket: 4,102 objects listed patient exports downloadable
A support note names the bucket, and the bucket answers anonymously.
// public read on the bucket Principal: "*" ✗ // block public access, scope the reader Principal: cloudfront-oac ✓
Block public access, then let one named reader through the front door.
Covers the languages your team ships in
The vulnerable code and its fix are shown in the language your developers work in every day.
- JavaScript
- TypeScript
- Java
- C#
- Python
- Scala
- PHP
- Ruby
- Go
- Kotlin
- Secure-coding practice for injection, broken access control, XSS, CSRF, and SSRF
- Exploit and remediation side by side, so the fix sticks, not just the fear
- Built for engineering teams in PCI DSS 6.2 and secure-coding programs
Phishing simulations
Test your workforce against realistic phishing attacks delivered through direct mailbox injection. Track the full funnel from delivery to credential submission, and auto-assign targeted training to employees who click.
- M365 and Google Workspace direct injection bypasses spam filters
- Outlook and Gmail reporter buttons capture real-time employee reports
- Full-funnel analytics: delivered, opened, clicked, credentials, reported
- Auto-remediation assigns exercises to employees who fail simulations
Inside the phishing add-on
Real screens from the admin console.
Smishing simulations
Test your workforce against SMS phishing, the channel with no email gateway in front of it. Send realistic but harmless text lures over a real SMS transport, measure who taps and who reports, and route the rest into targeted training.
- Real SMS delivery gated to business hours and carrier rate limits
- Per-recipient tap and REPORT-reply tracking via signed, time-limited tokens
- Full-funnel analytics: sent, delivered, clicked, submitted, reported
- Auto-remediation enrolls anyone who taps the lure into targeted lessons
Inside the smishing add-on
Real screens from the admin console.
Human risk management
Every employee gets a 0 to 100 score from how they handle real simulations, and every score can be traced to the events behind it. Rules then assign training to the people who need it, with a dry run before anything goes live.
- A score per person, 0 to 100 Built from simulation outcomes, phish reports, and training status. Recent behavior counts most, and everyone lands in a Low, Moderate, High, or Critical band.
- Every score shows its work Open any score to see its four weighted sub-scores and the events behind it. Managers and admins can trace any number to the exact simulations, reports, and lessons that produced it. No dark web, no profiling.
- Bring your own signals and data Push risky sign-ins, SOC alerts, and privilege flags from your SIEM, identity provider, or a script over a REST API, or upload a CSV. Define custom signal types for anything the catalog misses, and dry-run every import before it lands.
- Rules act on the score Auto-enroll remediation the moment someone crosses a threshold and alert their manager. Dry-run every rule first, with an audit log and a kill switch.
Latest blog articles
Practical guides on phishing, AI security, and awareness training. Written by the team behind the exercises.
Hoxhunt vs KnowBe4: Adaptive Phishing or Content Depth?
Hoxhunt vs KnowBe4 compared on adaptive phishing simulation, content library, engagement, SCORM export, reporting, and pricing. Vendor-neutral 2026 buyer guide.
Read the article
KnowBe4 vs Proofpoint: Which Security Awareness Platform Wins?
KnowBe4 vs Proofpoint Security Awareness compared on phishing simulation, threat intelligence, content library, SCORM export, and pricing. Vendor-neutral 2026 guide.
Read the article
OWASP MCP Top 10: Model Context Protocol Risks
The OWASP MCP Top 10 ranks the risks of connecting AI agents to tools. What each category means, and why MCP breaks the assumptions API security relies on.
Read the article


