verox›When Hearts Collide

When Hearts Collide

When Hearts Collide cover

Room: Love at First Breach 2026 – When Hearts Collide

An MD5 collision attack the app "matches" you with a dog by comparing MD5 hashes instead of actually comparing images, so if you can forge a file with the same MD5 as the target dog photo, you get matched instantly without ever needing the real image content to match.

When Hearts Collide banner


#Recon

Let's navigate to the URL and see what's there.

Matchmaker homepage

There's a hint on the page that tells us about MD5:

"Matchmaker keeps up with the universe by comparing your photo's MD5 hash to every doggo snapshot that wanders through the site. If your hash is identical to a pup's, that's our cue: the algorithm wags its glittering tail and declares you a match."

So the matching isn't based on the actual image content at all it's purely comparing MD5 hashes. That's the vulnerability right there.

MD5 hint on the page


#Testing the Upload

There's an option to upload images, so let's try uploading some random stuff first.

Uploading a random image

But this image doesn't match, since its MD5 hash has nothing in common with any dog in the database.

If we click on "browse a random picture," it navigates to a dog image.

Target dog picture

Let's download it first and upload it on the page.

Uploading the same dog image

The app recognizes it as an exact duplicate it already has on file and tells us there's no need to upload it again confirming the check is purely hash-based, not a fresh visual comparison each time.


#Building the Collision

Then I checked the MD5 of dog.jpg that I downloaded from the browser:

md5sum dog.jpga15ec1ecaef0eac2d8a9be79d1d51296  dog.jpg

MD5 of dog.jpg

After some research, I installed fastcoll (an MD5 collision tool). Since MD5 is cryptographically broken, we can use fastcoll to generate two different files that share an identical MD5 hash:

./fastcoll dog.jpgmd5sum md5_data1 md5_data2mv md5_data1 1.jpgmv md5_data2 2.jpg

fastcoll generating two files with the same MD5

After this, both images have the exact same MD5 hash. I uploaded one of them and got the flag.

Match complete - flag


#Flag

THM{hash_puppies_4_all}

New content available