BBLABSBBLABS
LaboratoriosAprender desde 0FuncionesPreciosTestimoniosDetrás de BBLABS
  1. Home
  2. Labs
  3. Wizard Takeover ATO ( IDOR + CSRF )
Insane45 min

Wizard Takeover ATO ( IDOR + CSRF )

By @gorka

Plataforma ficticia de memoriales para mascotas. El wizard de creación de 5 pasos se puede secuestrar anónimamente combinando IDs enumerables + ausencia de session binding + un token CSRF que el backend acepta literal (`"csrf-token"`). El atacante toma control del memorial, lee datos privados y recupera la flag

$1,500

That's what a company paid for this bug on YesWeHack. Here it is, rebuilt for you to find it yourself.

2.1K views18 completedUpdated Nov 2026
Log in to start

Learn to find this bug

This bug paid $1,500 on YesWeHack.

Create your account and practice real bugs that got paid. Download the environment, find it and learn the exact technique — your path to your first bounty.

650

hunters training

50

labs from real hacks

380

completions

$12,000

paid out for these bugs

40 flags captured this week
Create account
I already have an account

Access to all labs · no commitment · cancel anytime

Hackers who solved it· 8

sharat chandra1
@sharat chandraOct 2026
MA2
@maxioliveraSep 2026
flyingwhales3
@flyingwhalesAug 2026
thamerop00
@thamerop00Aug 2026
zynap
@zynapJul 2026
kaneki
@kanekiJul 2026
alndrwla
@alndrwlaJul 2026
XL
@xl4nJul 2026

Objectives

1
entender la app PetMemoria, identificar el wizard de 5 pasos y las URLs `/wizard/{id}/step/N`
2
descubrir que los IDs del wizard son enumerables (`GET /api/wizard/:id/state` responde sin auth)
3
confirmar que cualquier sesión anónima puede continuar el wizard de otro usuario
4
inspeccionar el HTML del paso 5
5
enviar el `POST /api/wizard/:id/step/5` cambiando `ownerEmail` a una dirección controlada
6
recoger el link de edición en `/mailbox?email=<tu-email>
7
abrir `/edit/:token` y extraer la flag de `favorite_memory`

Information

Platform
YesWeHack
Difficulty
Insane
Duration
45 min
Bounty
$1,500
Completed
18
Creator
gorka@gorka
Collaborators
antoniorivera@antoniorivera
Updated
Nov 2026

Download the environment

Reproduce it and find the bug yourself

Create account

Tools

Burp SuiteNavegador

Prerequisites

  • Docker + Docker Compose
  • Conociminetos sobre CSRF

Tags

CSRFIDORBAC

Achievement you'll earn

Solve this lab to unlock this shareable achievement

Solve this lab to unlock this shareable achievement

Community writeups

Free · no account

The checklist I run on every new target

47 checks ordered by cost: first what can get you in trouble, then the cheap stuff, and finally the expensive stuff — which is where the big bounties are. I'll send it to your inbox right now.

Unsubscribe in one click, from any email.

Descripción del lab

PetMemoria es una plataforma SaaS ficticia donde los usuarios crean memoriales online
para sus mascotas fallecidas. La página pública muestra una galería de memoriales
publicados y permite crear uno propio a través de un wizard de 5 pasos:

  1. Paso 1: nombre, especie, raza.
  2. Paso 2: fechas de nacimiento/fallecimiento, foto preset.
  3. Paso 3: descripción / mensaje de despedida.
  4. Paso 4: rasgos de personalidad (chips multi-select), recuerdo favorito.
  5. Paso 5: email del dueño → recibe un link de edición para gestionar el memorial.

Para reducir la fricción ("permitimos retomar desde otro dispositivo sin login"), el
wizard no exige sesión y los IDs se incrementan en /wizard/{id}/step/N. El form
del paso 5 incluye un token CSRF que se renderiza con Stimulus en el frontend — pero
el backend nunca recibe el valor renderizado y acepta el string literal del placeholder.

Hay además un bot que crea memoriales pendientes cada ~20 segundos para dar vida al
lab. De vez en cuando, el bot crea un memorial llamado "Luna" que contiene la flag en
su campo favorite_memory. Como el memorial está en draft, no aparece en la galería
pública — pero sí se puede encontrar enumerando los IDs.

Cómo verificar

./autodeploy.sh deploy
python3 tests/verify.py       # 8/8 checks
python3 exploit.py            # captura la flag, exit 0
bash flag/verify.sh           # reproduce el md5

Flag

$ bash flag/verify.sh
preimage: petmemoria::luna::wizard_takeover::ywh_souvenirdesanimaux::2026
md5     : a808b4e95a1e9412f6c0ef0255ff65d7
flag    : FLAG{a808b4e95a1e9412f6c0ef0255ff65d7}
[OK] La flag esperada coincide.

Referencias

  • Reporte original anonimizado: souvenirdesanimaux.fr (YesWeHack disclosure).
  • CWE-352: https://cwe.mitre.org/data/definitions/352.html
  • CWE-639: https://cwe.mitre.org/data/definitions/639.html
  • CWE-287: https://cwe.mitre.org/data/definitions/287.html
  • OWASP A01:2021 — Broken Access Control.

The community

This isn't a platform with users.It's people breaking the same things you are.

Inside people ask, share what they found and solve together what would block anyone on their own. It's free to join: no account, no plan, no email required.

Join the BBLABS community on Discord
Join the Discord

Free and open. You don't need a BBLABS account to join.

BBLABS LogoBBLABS

Laboratorios de hacking basados en hackeos reales. Aprende practicando sobre entornos vulnerables, con la resolución explicada paso a paso.

Producto

  • Funcionalidades
  • Precios
  • Labs
  • Aprender desde 0
  • Blog
  • Detrás de BBLABS

Legal

  • Términos
  • Privacidad
  • Cookies
  • Entrar
  • Crear cuenta

Para cualquier duda, bug, soporte o sugerencia puedes escribir a team@bblabs.es

© 2026 BBLABS. Todos los derechos reservados.