Challenges
17 flags. Each one is very easy: the clue tells you almost exactly where to look. You need a browser, View Source, DevTools, and maybe curl or Burp.
- Read the Source10 pts
Developers leave notes. Press Ctrl+U on the home page.
- Robots Know Things10 pts
Every site tells crawlers where not to go. Which file is that?
- Talking Headers10 pts
Look at the HTTP response headers (DevTools → Network, or
curl -I). Note the server banners too. - Leaky .env20 pts
Framework config files sometimes sit in the web root. Try the classic dotfile.
- Git Exposed20 pts
Someone deployed with the repository folder. Its
configmay hold credentials. - Forgotten Backup20 pts
robots.txt mentioned a backup folder. Is directory listing on?
- API Docs in the Open20 pts
APIs usually ship docs. Find them (robots.txt helps) and the OpenAPI JSON.
- No Auth on the API30 pts
The API docs list a users endpoint marked "TODO: add auth". Read every field.
- Change the Number (IDOR)30 pts
Sign in as the student and open a deal on the pipeline. Watch the request in DevTools (or check
/api/v1/my-deals), then open a deal you don't own. Deal IDs start at 1001. - Keys in JavaScript30 pts
Read
/static/js/app.js. A key is hardcoded. Send it as anX-API-KEYheader to the internal config API. - Root API30 pts
"No auth because it's behind the firewall." The docs list a
/api/rootfamily. Get the system secrets. - Debug in Production20 pts
A debug endpoint is listed in robots.txt. Debug output loves to print environment variables.
- SQLi Login Bypass40 pts
Log in without a password. Hint:
' OR '1'='1' --in the username. The page even shows you the query. - UNION SELECT50 pts
The
industryfilter on the Customers page is injectable and returns 4 columns. List tables viasqlite_master, then read the flag table. - Cookie Monster40 pts
Log in as student and look at the
kavis_sessioncookie. It is just Base64 JSON. Become admin and visit/admin. - Reflected XSS30 pts
The Help centre search prints your query back without escaping. Make it run JavaScript (e.g. an
<img src=x onerror=alert(1)>). - Dot Dot Slash40 pts
The product datasheet download (see
/sitemap.xml) takes a filename. Climb out ofdownloads/: the flag is insecret/flag.txtone level up. Bonus: read/etc/passwd.
Report tip: for each flag, record the URL, the request, why it is a vulnerability and how to fix it. That is what a real bug bounty report needs.