Skip to content
All modules
CoreModule 10 of 2790 minutes

Web recon and attack surface

Find the endpoint the challenge is really about: unlinked paths, JavaScript-only routes, exposed .git, and the parameters nobody documented.

Assumes4. Reconnaissance and OSINT

By the end you can

  • Map an application's routes from its own JavaScript before running any wordlist
  • Choose a content-discovery wordlist from the stack rather than by size
  • Recover a source tree from an exposed .git directory, including deleted and dangling objects
  • Read response headers and error pages for the framework, and use that to narrow every later probe
  • State the authorisation boundary you are testing inside, in one sentence, before you send a request

1. Read

2. Use the tools

In the order they come up while solving. Read what each one does, or go straight to the workspace tab that runs it.

3. Try one now

Generated in your browser and checked in your browser. No account, nothing to download, and a fresh one whenever you want another.

4. Practise on the real thing

Real picoCTF challenges that use these techniques, easiest first. 44 match in total - see the full index.

Common mistakes

The wrong turns this topic reliably produces. Written as the mistake rather than the rule, because the rule is easy to agree with and easy to walk straight past.

  • Brute-forcing paths before reading the client. The bundle usually names the routes, and a route named in the source is worth a thousand wordlist entries.
  • Reading 404 as 'not there'. Custom error pages return 200, and soft-404 detection has to be calibrated against a path you know is absent.
  • Dumping .git and reading only the checked-out tree. The interesting commit is normally the one that removed the secret.
  • Running a wordlist built for another stack. A Java application has no .php endpoints, so a scan that finds nothing has answered a question about a different server rather than about this one.
  • Reading only the routes the bundle actually calls. Route tables, feature flags and API base paths sit in the same JavaScript, and the endpoint a challenge is built around is usually the one the client never requests.

Checkpoint

From a target application, produce a list of routes with the evidence for each - source reference, header, or wordlist hit - and mark which of them are reachable without authentication.

Teaching note

This is the first module with real-world legal weight. Cover authorisation explicitly before the tools: the same techniques against a system nobody gave you permission to test are a criminal offence, not a lesson. Say it before the first scanner runs, not after.

Go deeper

The lessons above are written to get you through a challenge. These are the chapters to read when you want the subject instead - each one named so you can check it rather than take our word for it. Nothing here is affiliate-linked or sold by us.

  • Bug Bounty Bootcamp - Vickie Li

    Chapter 5, Web Hacking Reconnaissance

    The most complete enumeration checklist in the corpus, and it is organised by what each source can tell you.

  • Hacking APIs - Corey Ball

    Chapter 6, Discovery

    Recon aimed at surfaces with no HTML to crawl, which is where most modern applications actually live.

  • Black Hat Bash - Dolev Farhi and Nick Aleks

    Chapter 4, Reconnaissance

    The same work as shell pipelines, which is how it gets automated once you have done it by hand twice.