EXERCISE 1 — Building Level-1 (GET) and Level-2 (POST) payloads
===============================================================
USE A LEGAL TARGET: OWASP Juice Shop, DVWA, or a PortSwigger Web Security
Academy CSRF lab. Never a site you don't own.
--- LEVEL 1: GET FORGERY (image tag) ---
Suppose the app exposes a state-changing GET, e.g. DVWA-style:
GET /vulnerabilities/csrf/?password_new=hacked&password_conf=hacked&Change=Change
Payload (host on your own attacker page, then open it while logged into the app):
WHAT MADE IT POSSIBLE:
The endpoint CHANGES STATE on a GET request. An issues a
credentialed GET, so the browser attaches the victim's session cookie and
the password changes. The enabling property = "state change exposed over a
safe method (GET)".
--- LEVEL 2: POST FORGERY (auto-submitting form) ---
Suppose the app changes email via POST /profile with body email=...: