Иногда, для XSS могут быть особые условия, например, что нельзя использовать некоторые спецсимволы, типа бэктиков и скобок. Поэтому можно поиграться с переопределениями функций.
Например, для PoC подойдет переопределение функции toString, а потом её неявный вызов:
Или интереснее - переопределить ошибку.
Тут мы определили
А тут еще больше примеров в репозитории XSS-Payloads (самый классный все равно innerHTML)
Например, для PoC подойдет переопределение функции toString, а потом её неявный вызов:
toString=alert;window+1
Или интереснее - переопределить ошибку.
onerror=eval;Uncaught=alert;throw'\x28location\x29';
Тут мы определили
Uncaught
как имя функции, в throw
его содержимое (в том числе вызов), onerror
можно переопределить в eval
, а лучше в setTimeout
, дабы всякие WAF'ы не ругались (пример). А тут еще больше примеров в репозитории XSS-Payloads (самый классный все равно innerHTML)