Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Уязвимости (https://forum.antichat.xyz/forumdisplay.php?f=74)
-   -   [заметка] Нестандартные символы в именах таблиц MSSQL (https://forum.antichat.xyz/showthread.php?t=116363)

[x26]VOLAND 17.04.2009 14:03

[заметка] Нестандартные символы в именах таблиц MSSQL
 
(Тестировалось только Опере, FF3, IE7)
Недавно в процессе проведения SQL-инъекции на MSSQL столкнулся с трудностью.
Как известно, в этой СУБД в именах таблиц можно использовать символы из разных алфавитов (не только латинские).
В моём случае имя таблицы было на французском: 'Résultats' (Далее будет рассмотрен пример именно с этим вариантом).
Здесь присутствовала буква 'é' ('e' с диакритическим знаком). Ошибка, выдаваемая сервером сообщала о несуществующей таблице.
Это происходит потому, что по умолчанию браузер кодирует этот символ в URL используя 2 байта (%C3%A9), что, как стало ясно, не совпадало с кодировкой базы, и, следовательно, имя таблицы интерпретировалось как неверное. Я вспомнил, что французские символы нативно присутствуют в кодировке windows-1252 (она же Latin-1 или ISO 8859-1). Она как раз и содержит специфические символы европейских языков (французский, немецкий и т.п.).
Подходящую программу для кодирования искать было лень и я набросал свой вариант на C#:

PHP код:

private string Encode(string strInput)
{
      
Encoding enc Encoding.GetEncoding(1252);
      
char[] chr enc.GetChars(enc.GetBytes(strInput));

      
string strOutput "";
      for (
int i 0chr.LengthstrOutput += Uri.HexEscapechr[i++] )) ;
      return 
strOutput;


На PHP это ещё проще: Сохраняем скрипт с содержимым
PHP код:

echo urlencode('Résultats'); 

в кодировке Windows-1252 и запускаем его.

С помошью одного из способов я получил правильный URL-вариант данной буквы - %E9.
Подставив в запрос 'R%E9sultats' всё прошло как полагается, что свидетельствовало о том что я выбрал верную кодировку (windows-1252).
Естественно, данный метод подходит для других европейских языков. Для сербского, чешского, и восточноевропейских языков рекомендую использовать windows-1250.

Информация по кодировкам:
http://ru.wikipedia.org/wiki/Windows-1250
http://ru.wikipedia.org/wiki/Windows-1252

Twoster 17.04.2009 14:12

Интересная заметка! Многим будет полезно! Я допустим об этом не задумывался!

P.S. Всем бы нам и мне в частности научиться анализировать, а не юзать готовые сплойты из статей...

xXvladXx 17.04.2009 14:35

Согласен очень интересная заметка, примерно такое же присутствует в mysql(насчет таблиц хз)
в кодировки Windows-1251 символ %b3 означает тройку над строчкой(или что то типа этого)
а в кодировки GBK это \ и возможен обход экранирования кавычки
поясню:
Когда пхп обрабатывает строчку(в кодировки Windows-1251 или другой) то это тройка вверху строки и не трогает его
А в базе с кодировкой GBK это \ которого пхп не тронул

PS взято из паблик эксплойта

[x26]VOLAND 17.04.2009 15:11

Речь немного не о том.
Я описал случай когда браузеры неверно воспринимают нестандартные символы. Дело не в базе как таковой (субд может быть любая), а в невозможности послать сам url-запрос.

[x26]VOLAND 17.04.2009 17:45

постестил в IE. тоже работает.

.Slip 13.08.2009 16:12

Ап, фром РОА

Raul Duke 28.08.2009 16:05

привет всем, срочно нужно перекодировать в урл это символ ó. но возможности это сделать самому нету, помогите пжл.
сайт бразильский.

[x26]VOLAND 29.08.2009 15:08

%F3


Время: 14:26