Показать сообщение отдельно

  #25  
Старый 09.09.2007, 23:54
[53x]Shadow
Leaders of Antichat
Регистрация: 25.01.2007
Сообщений: 341
Провел на форуме:
3372120

Репутация: 2565
По умолчанию

Цитата:
Сообщение от che_ha  
А что делать если фильтрируюеться знак ( ' ) , а когда вожу запрос через char() выдает ошибку 'The char function requires 1 arguments' ??
Это происходит потому, что данная функция принимает только один параметр.
Для обхода фильтрации кавычек необходимо использовать функцию char(int ascii).
При этом необходимо учитывать, что функция принимает один параметр и конкатенация в MSSQL, происходит с помощью оператора "+".
Например если имя таблицы - USER, то соответственно при обходе надо использовать конструкцию char(117)+char(115)+char(101)+char(114), при этом кодировать сами кавычки уже не надо!!!
При проведении непосредственно инъекции необходимо так же помнить, что знак "+" интерпретируется в GET HTTP запросах как пробел, по-этому его необходимо заменять на его url encode %2B.
Для примера рассмотрим определение таблиц, если у нас при первом запросе к information_shema.tables вывалилось имя таблицы USER, то след запрос будет иметь вид:
Код:
http://www.site.com/news.asp?id=1'+or+1=(SELECT+TOP+1+TABLE_NAME+FROM+INFORMATION_SCHEMA.TABLES+WHERE+TABLE_NAME+NOT+IN+(char(117)%2Bchar(115)%2Bchar(101)%2Bchar(114)))--
в результате такого запроса получим имя второй таблицы и т.д.

Последний раз редактировалось [53x]Shadow; 11.09.2007 в 18:16.. Причина: Исправил неточность в примере...