Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
[заметка] Нестандартные символы в именах таблиц MSSQL |

17.04.2009, 14:03
|
|
Moderator - Level 7
Регистрация: 07.06.2006
Сообщений: 556
Провел на форуме: 7549607
Репутация:
2702
|
|
[заметка] Нестандартные символы в именах таблиц 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 = 0; i < chr.Length; strOutput += Uri.HexEscape( chr[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
Последний раз редактировалось [x26]VOLAND; 17.04.2009 в 17:45..
|
|
|

17.04.2009, 14:12
|
|
Reservists Of Antichat - Level 6
Регистрация: 20.08.2008
Сообщений: 328
Провел на форуме: 7144817
Репутация:
1503
|
|
Интересная заметка! Многим будет полезно! Я допустим об этом не задумывался!
P.S. Всем бы нам и мне в частности научиться анализировать, а не юзать готовые сплойты из статей...
__________________
You may say I'm a dreamer
But I'm not the only one
|
|
|

17.04.2009, 14:35
|
|
Участник форума
Регистрация: 28.10.2007
Сообщений: 143
Провел на форуме: 913233
Репутация:
162
|
|
Согласен очень интересная заметка, примерно такое же присутствует в mysql(насчет таблиц хз)
в кодировки Windows-1251 символ %b3 означает тройку над строчкой(или что то типа этого)
а в кодировки GBK это \ и возможен обход экранирования кавычки
поясню:
Когда пхп обрабатывает строчку(в кодировки Windows-1251 или другой) то это тройка вверху строки и не трогает его
А в базе с кодировкой GBK это \ которого пхп не тронул
PS взято из паблик эксплойта
Последний раз редактировалось xXvladXx; 17.04.2009 в 14:39..
|
|
|

17.04.2009, 15:11
|
|
Moderator - Level 7
Регистрация: 07.06.2006
Сообщений: 556
Провел на форуме: 7549607
Репутация:
2702
|
|
Речь немного не о том.
Я описал случай когда браузеры неверно воспринимают нестандартные символы. Дело не в базе как таковой (субд может быть любая), а в невозможности послать сам url-запрос.
Последний раз редактировалось [x26]VOLAND; 17.04.2009 в 15:14..
|
|
|

17.04.2009, 17:45
|
|
Moderator - Level 7
Регистрация: 07.06.2006
Сообщений: 556
Провел на форуме: 7549607
Репутация:
2702
|
|
постестил в IE. тоже работает.
|
|
|

13.08.2009, 16:12
|
|
Leaders of Antichat - Level 4
Регистрация: 16.01.2006
Сообщений: 1,966
Провел на форуме: 21768337
Репутация:
3486
|
|
Ап, фром РОА
|
|
|

28.08.2009, 16:05
|
|
Новичок
Регистрация: 21.01.2009
Сообщений: 6
Провел на форуме: 62064
Репутация:
0
|
|
привет всем, срочно нужно перекодировать в урл это символ ó. но возможности это сделать самому нету, помогите пжл.
сайт бразильский.
|
|
|

29.08.2009, 15:08
|
|
Moderator - Level 7
Регистрация: 07.06.2006
Сообщений: 556
Провел на форуме: 7549607
Репутация:
2702
|
|
%F3
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|