For this challenge, I started with my usual web recon workflow. I opened Burp Suite, visited the application, and clicked through as many pages and actions as possible. My goal was not to exploit anything immediately, but to build a useful HTTP history first so I could understand the application’s routes, API calls, and authentication flow before choosing an attack path.Documentation Index
Fetch the complete documentation index at: https://docs.jaspervanzeir.be/llms.txt
Use this file to discover all available pages before exploring further.
Enumeration
After manually browsing through the application, I also checked the JavaScript endpoints with JS Recon Buddy. This is a browser extension that extracts paths and endpoints from loaded JavaScript files, which is extremely useful for finding functionality that the frontend does not openly advertise. One endpoint immediately stood out:
/admin directly in the browser. Unfortunately, the application did not let me in and returned a clear error:


403 Forbidden, but now I had a concrete target instead of guessing through the UI.
Inspecting the JWT
I sent the/api/admin/flag request to Burp Repeater and opened the JSON Web Token tab. JWTs are often used for both authentication and authorization in these kinds of labs, so I wanted to inspect the token before trying anything else.

HS256, and the decoded payload was very straightforward:
What happens if I just changeusertoadmin?
Initial Access / Exploitation
I edited the JWT payload in Burp and changed the role fromuser to admin.

none algorithm bypass. In that challenge, changing the JWT header algorithm to none and removing the signature was enough to get admin access.
So I changed the header to:

Invalid token, which told me two important things:
- The server was actually verifying the JWT signature.
- The server was not vulnerable to the
alg: nonebypass.
Cracking the JWT Secret
Because the token usedHS256, the same secret is used to sign and verify the JWT. If that secret is weak, it can sometimes be cracked with a wordlist attack.
I switched over to Kali Linux and created a file called jwt.txt containing my current token. Then I used Hashcat with the rockyou.txt wordlist:
-m 16500: Tells Hashcat to use JWT mode.-a 0: Uses a straight wordlist attack.jwt.txt: The file containing my JWT./usr/share/wordlists/rockyou.txt: The wordlist used to guess the signing secret.--status: Prints progress while Hashcat runs.

Forging an Admin Token
To make sure the secret was correct, I went to jwt.io, pasted in my original token, and enteredpumpkin as the signature verification secret.
The site confirmed that the token was valid and the signature was verified.

HS256, kept the secret as pumpkin, and changed the payload role from user to admin:

Authorization: Bearer token in the /api/admin/flag request.
When I sent the request again, the response finally changed from 403 Forbidden to 200 OK.

Tools Used
- Burp Suite (Community Edition): Proxy, HTTP History, Repeater, and the JSON Web Token tab to inspect and modify requests.
- JS Recon Buddy: To discover hidden frontend routes and API endpoints from JavaScript files.
- Hashcat: To brute-force the JWT signing secret using mode
16500. - rockyou.txt: Wordlist used for the JWT secret cracking attempt.
- jwt.io: To verify the cracked secret and generate a new valid admin JWT.
Summary
- Key Steps: I used JS Recon Buddy to discover the hidden
/adminroute, then confirmed through Burp Suite that it triggered a request to/api/admin/flag. After inspecting the JWT, I tried changing the role toadmindirectly and also tested thealg: nonebypass, but both failed because the server properly checked the signature. Since the token usedHS256, I brute-forced the weak signing secret with Hashcat, foundpumpkin, forged a valid admin token, and used it to access the flag endpoint. - What I Learned: This challenge reinforced how dangerous weak JWT secrets are. Even when an application correctly rejects modified tokens and blocks
alg: none, the entire authorization model still collapses if the HMAC secret is easy to guess. - Crucial Mistakes/Takeaways: My first ideas failed, but they were still useful because they ruled out the obvious bypasses. The important pivot was recognizing that
HS256depends on a shared secret. If that secret appears in a common wordlist likerockyou.txt, an attacker can generate completely valid tokens without needing any other vulnerability.