Tools · CTF categories for beginners · 08 / 18
A methodology for beginner CTF web challenges: source, robots.txt, cookies, and requests
Work through a practice web challenge with a checklist: read the page source and scripts, check common files, inspect cookies and storage, and modify requests with developer tools or a proxy.
Look before you poke
Many beginner web challenges are solved by reading: HTML comments, JavaScript files that contain client-side checks, robots.txt listing hidden paths, and response headers. Open developer tools, read the Sources and Network panels, and note every endpoint the page calls.
- View source and comments
- robots.txt, sitemap.xml
- JavaScript files and source maps
- Response headers
- Cookies, localStorage, sessionStorage
Change what the client sends
Anything the client controls can be changed: form fields, hidden inputs, cookies, headers, and query parameters. A cookie like admin=false or a client-side price check in JavaScript is a classic beginner lesson. Use the browser’s edit and resend feature, curl, or an intercepting proxy such as Burp Suite Community or OWASP ZAP to modify requests.
curl -s https://challenge.example/robots.txt curl -s -i https://challenge.example/ | head -20 curl -s -b 'role=admin' https://challenge.example/dashboard curl -s -H 'X-Forwarded-For: 127.0.0.1' https://challenge.example/internal curl -s -X POST -d 'item=1&price=0' https://challenge.example/buy
Lab: practise on intentionally vulnerable apps
Run OWASP Juice Shop locally with Docker and complete the one-star and two-star challenges from its score board, which are designed to teach exactly these skills. Keep it on localhost. For each solved challenge, write one line about the root cause, such as “authorization checked only in the browser”.
docker run --rm -p 127.0.0.1:3000:3000 bkimminich/juice-shop # then open http://127.0.0.1:3000 and find the score board
Scope
Only test the challenge host and only in the ways the rules allow. Avoid automated scanners against event infrastructure unless permitted; they often violate rules and slow the event for everyone. The same discipline applies to bug bounty programs and penetration tests.
Diagram
Client-controlled values in a practice app
If the browser sends it, you can change it.
Cookie
Cookie: role=user
Dashboard shows user view
Hidden field
POST /buy item=1&price=49
Order total 49
Header
X-Forwarded-For: 127.0.0.1
Internal page shown
Check yourself
1. Which file sometimes lists paths the site does not want indexed?
2. A practice app checks prices in JavaScript only. What does that teach?
3. Where should you practise these techniques outside events?