Love at First Breach 2026 - Beginner's Track
Beginner's Track
Love Letter Locker
Use your skills to access other users' letters. - by munra & DrGonz0
Welcome to LoverLetterLocker, where you can safely write and store your Valentine's letters. For your eyes only?
In Love Letter Locker, the web service is available on port 5000. We visit the site and create an account and log in using that account. We see a page where we can create letters. We can already see that there are two in the archive, but we cannot access them at the moment. We don't have a letter ourselves.

We create one.

No we can review our letter. We click on Open.

After opening, you will be redirected to the following page:
Our letter/letter/3 appears to have the ID 3; we already have two in the archive, the ID appears to be incremented. This request for letters could be vulnerbale to an Insecure Direct Object Reference (IDOR). An IDOR occurs when an application exposes a direct reference to an internal object and does not verify whether the user is authorized to access it. Since the letter ID appears incremental and predictable, we could modify the URL to /letter/1, /letter/2, /letter/4 to access other users' letters without permission.

We give it a try and try to access the fist
We can open the first letter, from user Gonz0. It contains the first flag, and we were able to verify an IDOR.

Valenfind
Can you find vulnerabilities in this new dating app? - by munra & DrGonz0
There’s this new dating app called “Valenfind” that just popped up out of nowhere. I hear the creator only learned to code this year; surely this must be vibe-coded. Can you exploit it?
In Valenfind, the web service is available on port 5000. We visit the site and are greeted with a login. However, we can also create an account. First, we create an account...

... and log in with it. On the dashboard, we can view other users' profiles and change the profile theme of the respective user. While we do this, we do not see any requests being made.

However, we recorded our traffic beforehand using Burp Suite. In the HTTP history, we go through the individual requests and find one that appears to be responsible for the change:
We forward the request to repeater module. An HTML page is passed to the parameter layout=theme_classic.html. It is possible that the content of a file is included and loaded on the page. This could enable us to perform a Local File Inclusion (LFI).

We try to include /etc/passwd and are successful. The layout parameter is vulnerable to LFI.

We check for /proc/self/cmdline Command line arguments and /proc/self/environ Environment variables. From the command line arguments we see that the app.py running in this context is /opt/Valenfind/app.py.

We include this and extract the source code. From this, we identify the ADMIN_API_KEY.

Furthermore, we find the route /api/admin/export_db, which expects the ADMIN_API_KEY in the X-Valentine-Token header. This allows us to extract the database which could obtain valuable loot.
We request the database and find the user data and the flag in it.

TryHeartMe
Access the hidden item in this Valentine's gift shop. - by munra & DrGonz0
The TryHeartMe shop is open for business. Can you find a way to purchase the hidden “Valenflag” item?
In Valenfind, the web service is available on port 5000. We visit the site and are greeted with a login. However, we can also create an account. First, we create an account...

... and log in with it. We have a shop in front of us, but we can't find the item valenflag, nor do we have any credits in our account to purchase anything.

We inspect the stored cookies and find a JWT session cookie.

We decode this and see, in addition to email and topics, credits that are set, as well as our role.

We try to set the additional fields when creating users using mass assignment. We create a user, but intercept the request using Burp Suite and add credits and role during creation, thus trying to obtain an account that is admin and has sufficient credits.

However, the JWT we receive is one without credits and without an admin role. Mass assignment does not seem to work. We are now trying cookie tampering. We see that the cookie was signed with a symmetric algorithm HS256.
We could now try to customize the cookie and set one without a signature and the algorithm set to None in the hope that the application will accept the cookies without a signature and with the algorithm None set.
Another option would be to switch to an asymmetric algorithm like RS256 to confuse the application into accepting a forged JWT.

We were unsuccessful with None. But with RS256. We set the values as we wish using the RS256 algorithm.

We replace the cookie and reload the page.

We are still authenticated, but now are admin and do have 99999 credits. As admin we see the product ValenFlag. We click on it...

... and try to purchase it.

After purchasing it we retrieve the flag.

Cupid's Matchmaker
Use your web exploitation skills against this matchmaking service. - by munra & DrGonz0
Tired of soulless AI algorithms? At Cupid's Matchmaker, real humans read your personality survey and personally match you with compatible singles. Our dedicated matchmaking team reviews every submission to ensure you find true love this Valentine's Day! 💘No algorithms. No AI. Just genuine human connection
In TryHeartMe, the web service is available on port 5000. We visit the site and see a dting app.

If we scroll down we see that our applications are reviewd by humans.

We can get a perfect match by submitting a survey.

If we scroll down we see that our application would be reviewd withing a minute. We have a contact form in front of us that may be reviewed by other users. This gives us reason to test for blind XSS.

We attempt to inject JavaScript into the moderator's view, which is then executed in its context. This could allow us to extract session cookies if the HttpOnly tag has not been set; otherwise, we could attempt to exfiltrate the content of the user's view by making a request to our server with the contents.
Methodologically, you could now fill each field with a payload such as
This allows us to identify which field is vulnerable in our requests to our web server.
We fill each field with the following payload submit the session cookie.

After a short duration we retreive the cookie, which is the flag.

Corp Website
lafb2026-e7 - by munra & kohzmik
Valentine's Day is fast approaching, and "Romance & Co" are gearing up for their busiest season.
Behind the scenes, however, things are going wrong. Security alerts suggest that "Romance & Co" has already been compromised. Logs are incomplete, developers defensive and Shareholders want answers now!
As a security analyst, your mission is to retrace the attacker's, uncover how the attackers exploited the vulnerabilities found on the "Romance & Co" web application and determine exactly how the breach occurred.
In Corp Website, the web service is available on port 3000. We visit the site and it seems like a static page. We inspect the technologies installed and used and see that Next.js 16.0.6 is used.

This specific version is vulnerable to React2Shell. React2Shell CVE-2025-55182 is a critical unauthenticated remote code execution vulnerability in the React Server Components (RSC) protocol that insecurely deserializes attacker-controlled HTTP payloads, letting an attacker execute arbitrary code on a server. Next.js versions 16.0.6 and earlier that bundle vulnerable RSC packages inherit this flaw, meaning applications built on these versions can be compromised simply by sending a crafted request.

We find the following POC and can demonstrate remote code execution.

We spawn a shell like the following and find the flag in the users home directory.

Last updated
Was this helpful?