Сообщение от
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)))--
в результате такого запроса получим имя второй таблицы и т.д.