Объясните эту строку XSS, она использует Perl - PullRequest
2 голосов
/ 03 февраля 2011

Я пытаюсь протестировать один из моих классов очистки php на нескольких xss-скриптах, доступных на http://ha.ckers.org/xss.html

Так что один из скриптов там содержит perl, это какой-то оператор perl??И будет ли это выполняться непосредственно на сервере, поскольку perl - это язык сценариев сервера.

perl -e 'print "<IMG SRC=java\0script:alert(\"XSS\")>";' > out

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

Ответы [ 2 ]

2 голосов
/ 03 февраля 2011

\0 - это символ завершения строки в языке C. Поскольку perl построен поверх C, в старые времена вы могли вводить этот «ядовитый нулевой байт», чтобы часть C читала строку <IMG SRC=java вместо всей строки, и, таким образом, возможно, пропустить все это, даже если вы пытались раздеть такие вещи, как SRC=javascript:

По большей части это больше не работает, потому что языки более высокого уровня довольно успешно справляются с такими атаками, убирая случайные символы управления, такие как \0, перед тем как отправлять строки в подпрограммы более низкого уровня.

Вы можете прочитать больше об отравленном нуль-байте здесь: http://insecure.org/news/P55-07.txt или здесь: http://hakipedia.com/index.php/Poison_Null_Byte

1 голос
/ 03 февраля 2011

Perl не атака, он просто демонстрирует, как генерировать атаку, поскольку вы не можете увидеть ее в виде простой строки.Perl как \0) в данных.

...