Wstrzyknięcia - wartości testowe

Napisy pokazujące, czy pole traktuje wejście jak dane, a nie kod: cudzysłowy, znaczniki, szablony, ścieżki. 11 wartości, każda z tym, co psuje, i z tym, co zamiast tego robi poprawna aplikacja.

injections wersja 1.0, aktualizacja 2026-11-04 CC-BY-4.0 offensive

Wpisuj je po jednej skrótem AltShiftN w palecie albo weź wszystkie do skryptu poleceniem nkb emit injections.

Paleta oznacza te wartości jako offensive. To klasyczne sprawdziany escapowania, żadna z nich nie jest exploitem znanej podatności, a nic nie jest wpisywane, dopóki nie naciśniesz skrótu. Używaj ich tylko na systemach, które wolno Ci testować.

Pojedynczy cudzysłów

injections/single-quote
' '
  • 1 grafem
  • 1 punkt kodowy
  • 1 bajt
  • 1 jednostka UTF-16
Co psuje
Najskuteczniejszy test z jednego znaku: pole, które bez ucieczki wstawia go do zapytania SQL, kończy napis za wcześnie, a strona pokazuje błąd bazy danych.
Co robi poprawna aplikacja
Zapisany i zwrócony jako jeden znak oraz pokazany jako jeden znak.

Znaczniki pogrubienia

injections/angle-brackets
<b>test</b> <b>test</b>
  • 11 grafemów
  • 11 punktów kodowych
  • 11 bajtów
  • 11 jednostek UTF-16
Co psuje
Znaczniki w polu tekstowym są przy wyświetlaniu albo escapowane, albo renderowane, a pogrubiony tekst na stronie znaczy, że pole nie escapuje niczego.
Co robi poprawna aplikacja
Pokazane jako zwykły tekst, z widocznymi znacznikami.

Znacznik skryptu

injections/script-tag
<script>alert(1)</script> <script>alert(1)</script>
  • 25 grafemów
  • 25 punktów kodowych
  • 25 bajtów
  • 25 jednostek UTF-16
Co psuje
Klasyczny test escapowania wyjścia: okno z napisem 1 albo tekst, który znika, znaczy, że wartość trafiła na stronę jako kod w miejscu, gdzie jest pokazywana.
Co robi poprawna aplikacja
Pokazany jako zwykły tekst wszędzie tam, gdzie wartość się pojawia, także na listach i w eksportach.

Obraz z obsługą błędu

injections/img-onerror
<imgsrc=xonerror=alert(1)> <img src=x onerror=alert(1)>
  • 28 grafemów
  • 28 punktów kodowych
  • 28 bajtów
  • 28 jednostek UTF-16
Co psuje
Łapie filtr, który usuwa znaczniki skryptu po nazwie, a przepuszcza atrybut uruchamiający kod, więc wartość działa, gdy tylko zepsuty obraz się wczyta.
Co robi poprawna aplikacja
Pokazany jako zwykły tekst.

Wyrażenie szablonu w podwójnych nawiasach klamrowych

injections/template-braces
{{7*7}} {{7*7}}
  • 7 grafemów
  • 7 punktów kodowych
  • 7 bajtów
  • 7 jednostek UTF-16
Co psuje
Silniki szablonów, takie jak Jinja, Twig i Angular, wyliczają podwójne nawiasy klamrowe, więc 49 na stronie znaczy, że dane od użytkownika trafiły do szablonu jako kod.
Co robi poprawna aplikacja
Pokazane dokładnie tak, jak wpisane, z widocznymi nawiasami.

Wyrażenie szablonu ze znakiem dolara

injections/template-dollar
${7*7} ${7*7}
  • 6 grafemów
  • 6 punktów kodowych
  • 6 bajtów
  • 6 jednostek UTF-16
Co psuje
Literały szablonowe JavaScriptu, języki wyrażeń Javy i Freemarker wyliczają znak dolara z nawiasami klamrowymi, więc 49 znaczy, że wartość trafiła do jednego z nich jako kod.
Co robi poprawna aplikacja
Pokazane dokładnie tak, jak wpisane.

Ścieżka wychodząca poza swój folder

injections/path-traversal
../../etc/passwd ../../etc/passwd
  • 16 grafemów
  • 16 punktów kodowych
  • 16 bajtów
  • 16 jednostek UTF-16
Co psuje
Nazwa pliku doklejona do folderu bez normalizacji ścieżki wychodzi z niego, więc aplikacja czyta albo zapisuje plik, do którego nigdy nie miała sięgać.
Co robi poprawna aplikacja
Odrzucona albo znormalizowana tak, żeby wynik został w zamierzonym folderze.

Ścieżka wychodząca z odwróconymi ukośnikami

injections/path-traversal-win
..\..\windows\win.ini ..\\..\\windows\\win.ini
  • 21 grafemów
  • 21 punktów kodowych
  • 21 bajtów
  • 21 jednostek UTF-16
Co psuje
Windows czyta odwrócony ukośnik jak separator, a walidator, który szuka tylko ../, przepuszcza to samo wyjście z folderu.
Co robi poprawna aplikacja
Odrzucona albo znormalizowana dokładnie tak jak postać ze zwykłymi ukośnikami.

Cudzysłów i komentarz SQL

injections/sql-comment
admin'-- admin'--
  • 8 grafemów
  • 8 punktów kodowych
  • 8 bajtów
  • 8 jednostek UTF-16
Co psuje
Cudzysłów kończący napis i komentarz ucinający resztę zapytania: klasyczny kształt zapytania logowania zepsutego przez niescapowane wejście.
Co robi poprawna aplikacja
Zapisany i pokazany jako napis o ośmiu znakach.

Specyfikatory formatu

injections/format-string
%s%n%x %s%n%x
  • 6 grafemów
  • 6 punktów kodowych
  • 6 bajtów
  • 6 jednostek UTF-16
Co psuje
Użyty jako format printf w C, %x czyta stos, %n zapisuje w pamięci, a wywołanie formatowania w języku zarządzanym, które znajduje specyfikatory bez argumentów, zgłasza błąd.
Co robi poprawna aplikacja
Traktowany jako zwykły tekst, nigdy nie przekazany jako napis formatu.

Zewnętrzna encja XML

injections/xml-entity
<!DOCTYPEt[<!ENTITYeSYSTEM"file:///etc/passwd">]><t>&e;</t> <!DOCTYPE t [<!ENTITY e SYSTEM "file:///etc/passwd">]><t>&e;</t>
  • 64 grafemy
  • 64 punkty kodowe
  • 64 bajty
  • 64 jednostki UTF-16
Co psuje
Parser XML, który rozwiązuje encje zewnętrzne, zastępuje odwołanie do encji plikiem wskazanym w deklaracji, więc zaimportowana treść każe serwerowi czytać jego własne pliki.
Co robi poprawna aplikacja
Encje zewnętrzne nierozwiązywane, a wartość potraktowana jako tekst albo odrzucona.