PDA

Просмотр полной версии : PHP addcslashes() vulnerabilitiy


Евгений Минаев
05.01.2008, 13:01
PHP функция addcslashes экранирует спецсимволы в стиле языка C , является аналогом addslashes с возможностью указывать свой набор символов для экранирования . Некорректно работает с некоторыми спецсимволами , а именно null byte считает концом строки.

echo addcslashes ( "some\0thing" , '\'' );
->some


echo addcslashes ( "some\0thing'" , chr(0).'..\'' );
-> some\000thing\'

-=lebed=-
05.01.2008, 13:23
символы с Ascii менее 32 и более 126 преобразуются в восьмеричное представление.
На выходе должно быть тоже что и на входе:

echo addcslashes ( "some\0thing" , '\'' );
->some\0thing
но \0 нулевой байт интерпретируется как конец стироки, так?
Во втором примере экранируются все символы из диапазона от chr(0) до одинарной кавычки, должно быть на выходе:

echo addcslashes ( "some\0thing'" , chr(0).'..\'' );
-> some000thing\'
, потому как \0 преобразовался в восьмеричное представление 000, а вот почему пропала кавычка? её в аргументе тоже надо было экранировать?

P.S. В тэгах php тут на форуме тоже иногда пропадают экранирующие слэши, лучше в code заключать, потому что я не уверен, что в посте вывелось то, что реально в php выводится...