03. Recon

Before attacking anything, map it. The more of the app you've seen, the more places you have to look for bugs.

What Are We Looking For?

Low-Hanging Fruit

View the source

Developers leave notes in HTML comments that never show on the rendered page:

<!-- TODO: remove test account admin/admin123 before launch -->

Read the JavaScript

Frontend JS often contains API endpoints, feature flags, hardcoded keys, and admin routes. Check the Sources tab in DevTools.

robots.txt

/robots.txt tells search engines what not to index. That's also a list of places the owner didn't want people looking.

User-agent: *
Disallow: /admin-old/
Disallow: /backup/

Common files worth checking

PathWhy
/robots.txt, /sitemap.xmlLists of paths
/.git/Exposed source code repository
/.envEnvironment file with secrets
/backup/, *.bak, *.oldForgotten copies
/api/, /swagger, /graphqlAPI docs and endpoints

Content Discovery

For real targets, tools brute-force paths from a wordlist to find unlinked pages:

# ffuf: fast web fuzzer
ffuf -u https://target.example/FUZZ -w wordlist.txt

# gobuster
gobuster dir -u https://target.example -w wordlist.txt
Only with permission Brute-forcing sends thousands of requests. Only point these tools at targets you're authorized to test.
Try it Lab 01 (TrailMart) has a flag split into 3 pieces, hidden in the places covered on this page.
04-injection →