These are the writeups of p3rf3ctr00t ctf 2026 web challenges that i created for our collaboration with CTFZONE.
Been a while since a wrote a writeup so apologies for the quality of work :)
As per the number of solves this got ill probably have to create harder challenges next time :)
Secure Storage Prod
Difficulty: EASY
We can begin by registering our user and logging in to the application

From the dashboard we can see that there is no functionality on the webpage , we can also see that the it is a python flask application which is known to be vulnerable to SSTI.

This can be demonstrated by trying to pass a “username” param with classing ssti payload “{{7*7}}” which will result in 49

We can now use an SSTI payload to get Remote Code Execution , you can find one » here
There is also a filter for the username parameter that tries to block some strings in the payload

You can use the payload below to list content of root of fileystem and then read the flag
|
|
To read the flag we use “cat flag*” since fullstops are filtered out


Flag: r00t{MDAwMDAyMDkxODAzOTM0MDYzMzZ1dTQ4ODQzNzc5OTc3NDM5NDM5Nzk0Mw}
Secure Storage UAT
Difficulty: EASY
There was an unintended solution to this challenge ill go through both
Unintended
We also have to register and login, after that we can view some files we can view.

Visiting the files endpoint we can see a bunch of files , notes.txt and dev.py look interesting
The notes.txt has a hint about directory discovery
We can find a directory called files , for thi we can use tools such as dirsearch, gobuster or ffuf.

You can exploit the path traversal to go up the file directory to read the flag

|
|
Intended
Using the dev.py code , we can generate an id for files on the file system , my aim was for players to exploit idor vulnerability. But a vulnerability was accidentally introduced for the solution above thus making this challenge easier :(
|
|
Running this with the file name “Security Audit”(this was to be gotten from challenge description) as a parameter we can get an id to fetch the files from the dashboard
|
|

|
|
Secure Storage Revenge
Difficulty: Medium
This challenge was inspired by a vulnerability i found IRL, i tried to replicate it as best as i can.
For this one we can also register and login , when capturing the requests we can see that there is a weird request to /api/public-key

When fetching our profile we can see that the request and response body are encrypted , there is also an x-encrypted key custom header , we have to go into the js to find out what is happenning

The js is obfuscated we can use this webiste to do deobfuscation » here

Analysing the code we can see a function that loads our profile, a function to dowload files , we can also see the encryption and decryption functionality



At this point you can use AI to create a solution for you, i mean its 2026 :), but if you are a nerd and analysed the code , you can see that the public key was combined with a generated aes key to create a token a that was used to encrypt and decrypt the requests and response .
This is considered security through obscurity which is a common practice in some applications and it is used to mask requests but if you can go around it you can discover some juicy vulnerabilities. Since the requests are encrypted you can able to bypass WAFs with your payload so instead its like an own goal for the developer if the underlying application is vulnerable.
So the POC for this is , we use the download functionality to read the flag.
You can run this in the browser console so that you can utilize the already generated keys from the application itself
|
|
There was a sanitize funtion for the file name that stripped “../” from the payload hence this directory bypass is required.
|
|

|
|