🏎️ GhostRace
GhostRace es una tienda de recargas y códigos digitales para videojuegos de juguete: tarjetas regalo, gemas de juego, suscripciones a «GhostPass» y una sección de reseñas de producto. Corre en local (python app/app.py), usa SQLite para el catálogo y no depende de ningún servicio externo.
A diferencia de otros laboratorios de la serie — donde cada reto ataca un fallo conceptualmente distinto —, aquí los 3 retos son la misma familia de fallo aplicada a tres superficies distintas de la tienda: una race condition (patrón TOCTOU, Time Of Check to Time Of Use). El objetivo pedagógico es aprender a reconocer el patrón, no memorizar payloads.
A usar la función de Burp Repeater pensada exactamente para esto: agrupar varias pestañas con la misma petición y enviarlas todas en paralelo, cerrando la ventana de tiempo que separaría las peticiones si se enviaran a mano. Y, más importante todavía, a confirmar que una race condition sospechosa es de verdad explotable antes de darla por buena — no todo lo que parece una carrera lo es.
Se practica en local contra tu propia instancia (127.0.0.1). Cada reto necesita enviar varias decenas de peticiones en paralelo con Repeater — no lo hagas contra ninguna web que no sea este laboratorio. Usa /reset para devolver el plan y el catálogo a su estado inicial.
El mismo cupón de bienvenida, aplicado muchas veces en paralelo sobre un pedido antes de que el servidor lo marque como usado.
Varias peticiones simultáneas de activar la invitación premium acumulan más meses de los que el plan debería permitir.
Votos duplicados enviados en paralelo inflan — o hunden — la nota media de un producto por encima de lo que el límite de un voto por cuenta debería permitir.