Exploiting a mass assignment vulnerability

Description

To solve the lab, find and exploit a mass assignment vulnerability to buy a Lightweight l33t Leather Jacket. You can log in to your own account using the following credentials: wiener:peter.

Approach

After accessing the lab, I enabled the FoxyProxy extension to proxy all my requests through Burp Suite to check if there were any requests reaching an API. I found this interesting request:

GET /api/checkout HTTP/2
Host: 0a64001f04086e8280e0b2da00300085.web-security-academy.net
Cookie: session=4vAia8UQZEpDw9qkNRVO7pTpaMmFrUUm
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:125.0) Gecko/20100101 Firefox/125.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: https://0a64001f04086e8280e0b2da00300085.web-security-academy.net/cart
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
Te: trailers

Its response:

It prints out the data of the product at the checkout. To start, I sent the request to Burp Intruder to see its behavior when I change the HTTP methods. I added a payload marker around the HTTP method and in the payload tab, I chose simple list as the payload type. Then, in the payload settings, I selected the HTTP verbs list (note: adding lists is available in Burp Suite Pro, but you can manually build your own list if needed). After sending the attack and filtering by length, I noticed that a request with POST as the HTTP method gets a different response:

So I used the Content-Type Convert extension and changed it to JSON and resent the request. I got this error:

I copied the JSON body from the first GET request and resent the request:

However, I got this error indicating insufficient funds:

I tried changing item_price to 0, but I still got the same error. Then I noticed the percentage item in the chosen_discount field. By setting that to 100, it means I will get a 100% discount on the product, making it free. I sent the request:

I got the following response:

The order was placed successfully, and I bought the leather jacket, solving the lab.