
Descripción
This lab’s purchasing flow contains a race condition that enables you to purchase items for an unintended price.
To solve the lab, successfully purchase a Lightweight L33t Leather Jacket.
You can log into your account with the following credentials: wiener:peter
.
Multi-endpoint race conditions writeup
Accederemos al laboratorio, nos registraremos en ‘My account’ con el usuario ‘wiener’ y la contraseña ‘peter’ y veremos una tienda online con varios productos:

Sólo podremos comprar la ‘Gift Card’, pero tenemos que comprar la ‘Lightweight l33t Leather Jacket’. Para ello compraremos una ‘Gift Card’ y registraremos el proceso con el ‘Logger’:

Tendremos las siguientes peticiones:
- POST /cart: Añade el producto al carrito.
- POST /cart/checkout: Compra el producto del carrito.
Nos llevamos ambas peticiones al ‘Repeater’ con Ctrl + R o Click derecho -> Send to Repeater:

Con una tarjeta comprada (para tener algo en el carrito), cambiaremos el id de la petición de añadir al carrito a 1, seleccionando así la chaqueta. Tras esto enviaremos ambas peticiones en paralelo, completando así el laboratorio:

Nota: Si el tiempo entre peticiones es distinto, para que funcione, habrá que añadir una petición GET a la raíz al inicio de las dos peticiones mencionadas para ‘calentar la conexión’ y así disminuir el tiempo necesario y mejorar las posibilidades de la condición de carrera. En este caso, las peticiones tardaron 434 ms ambas, por lo que no fue necesario.