Web5: SQL-инъекция — некоторые методы обхода механизмов фильтрации

Web5: SQL-инъекция — некоторые методы обхода механизмов фильтрации

1. Усеките содержимое запроса

Если вы хотите игнорировать сценарии в запросе. Например, для обработки ниже запрос требует условия active=1, но мы можем комментировать (--, -- -, -+, #, /*, /**/, // , ;%00…) и игнорируй это. При майнинге мы часто не знаем, что делает оставшееся содержимое запроса, поэтому использование комментариев в этом случае очень эффективно.

Web5: SQL-инъекция — некоторые методы обхода механизмов фильтрации

После комментариев наш запрос будет выглядеть следующим образом:

Web5: SQL-инъекция — некоторые методы обхода механизмов фильтрации

2. Обход фильтрации ключевых слов

а. Встроенные комментарии

Встроенные комментарии очень эффективно используются для обхода фильтрации пробелов. Для обхода фильтрации пробелов можно использовать следующие символы: /**/, %20, %09, %0a, %0b, %0c, %0d, %a0). Например:

Web5: SQL-инъекция — некоторые методы обхода механизмов фильтрации

Или обойти фильтрацию ключевых слов (доступно в MySql). В приведенном ниже примере ключевые слова объединение и пароль находятся в черном списке, поэтому они заблокированы. Мы можем обойти это следующим образом:

Web5: SQL-инъекция — некоторые методы обхода механизмов фильтрации

б. Заменить ключевые слова

При использовании SQL-инъекции мы часто используем такие ключевые слова, как: Union, Select, Information_schema... Во многих случаях программисты просто заменяют эти ключевые слова:

Web5: SQL-инъекция — некоторые методы обхода механизмов фильтрации

Мы легко видим, что приведенный выше код обработки отсутствует. Если это просто сопоставление с образцом, то обходной путь чрезвычайно прост. Давайте применим учет регистра, когда прописные и строчные буквы интерпретируются по-разному.

Теперь вместо использования ключевого слова:

select, union…

Мы будем использовать:

SeLEcT, UniOn…

В основе этого обхода лежит то, что системы управления базами данных не различают регистр и ключевые слова case.

В некоторых случаях веб-приложение отфильтровывает все или часть определенных ключевых слов (объединение, выбор...). Обойдемся следующим образом:

id=1+uniunionon+SeLselectecT+1,2,3-- -

После того, как веб-приложение отфильтрует объединение и выбор, у нас останется правильный запрос:

id=1+union+SeLecT+1,2,3-- -

в. Кодировка символов

Мы можем обойти блокировку ключевых слов WAF (брандмауэром веб-приложений), закодировав их. Многие приложения WAF декодируют запрос только один раз и отфильтровывают ключевые слова в черном списке, а затем закодируют запрос дважды, чтобы в этом случае его можно было обойти.

Web5: SQL-инъекция — некоторые методы обхода механизмов фильтрации

3. Обход блоков одинарных и двойных кавычек

- Давайте рассмотрим пример, прежде чем изучать конкретно этот обход.

Web5: SQL-инъекция — некоторые методы обхода механизмов фильтрации

В этом сценарии у нас есть таблица в базе данных с именем пользователей. Следующая задача — узнать имя столбца в таблице, чтобы получить информацию о нем. Как и в приведенном выше запросе, мы используем условие: table_name='users'. Но если WAF блокирует как одинарные кавычки ('), так и двойные кавычки (""), мы больше не сможем использовать "пользователи" или "пользователи". Так как же решить эту проблему? Встроенная система баз данных предоставляет нам функцию, которая Очень хорошо решает эту проблему функция CHAR( ) (для Oracle это CHR()). Например, в приведенном выше запросе мы обойдем ее следующим образом:

Web5: SQL-инъекция — некоторые методы обхода механизмов фильтрацииWeb5: SQL-инъекция — некоторые методы обхода механизмов фильтрации

Программисты PHP хорошо знакомы с функцией addslashes(). Функция addslashes() добавляет перед специальными символами, такими как одинарная кавычка ('), двойная кавычка ("), обратная косая черта (\), символ NUL (нулевой байт) "\", чтобы помочь системе управления базой данных. Есть ли никаких сложностей и путаницы при обработке строк, содержащих эти символы?Таким образом, когда мы хотим внедрить в запрос по сценарию: name='someName' или '1'='1'-- результаты уже не такие, как мы ожидали.

Однако существует способ обойти функцию addslashes() и вставить символы одинарных кавычек ('). Этот метод был общедоступен уже довольно давно, и реализовать его довольно сложно, поскольку он привязан к стилю кодирования, примененному к веб-сайту.

4. Обход ошибки «Недопустимое сочетание параметров сортировки для операции UNION».

В некоторых системах управления (обычно встречающихся в MySql), когда для баз данных и таблиц задан режим сортировки, при использовании ключевого слова UNION будет сообщаться об ошибке «недопустимое сочетание параметров сортировки для операции UNION». Настройка параметров сортировки может быть обусловлена ​​намерением разработчика базы данных или настройками MySql по умолчанию. В случае использования объединения мы должны убедиться, что условие выбора значения в каждом поле должно иметь соответствующий тип кода. На мой взгляд, эта ошибка довольно распространена, особенно для CMS под управлением Apache MySql. Дополнительную информацию можно узнать по адресу: http://bugs.mysql.com/bug.php?id=57926.
В этом случае мы можем использовать способы преобразования в соответствующий тип кодировки.

Например, в следующем случае:

Web5: SQL-инъекция — некоторые методы обхода механизмов фильтрации

В приведенном выше запросе, если для столбца1 установлено, например, параметры сортировки Unicode-UTF8 или _latin1, то то, что выбрано из столбца2, необходимо будет преобразовать в соответствующий код. Мы можем принудительно применить стиль следующим образом:

Web5: SQL-инъекция — некоторые методы обхода механизмов фильтрации

Мы видим недостаток в этом методе обхода: мы должны знать, что сопоставленный код — _latin1. На мой взгляд, лучший способ обойти это — использовать функции шестнадцатеричного и нешестнадцатеричного кодирования и декодирования.

Web5: SQL-инъекция — некоторые методы обхода механизмов фильтрации

Есть много других функций, которые можно использовать вместо шестнадцатеричных и нешестнадцатеричных.


Инструкции по понижению напряжения снижают температуру процессора

Инструкции по понижению напряжения снижают температуру процессора

Чем больше работы вы выполняете на своем компьютере, тем больше нагревается ваш процессор (процессор), особенно во время тяжелых игр или редактирования видео. Ваш процессор с большей вероятностью перегреется, если система вентиляции плоха или термопаста на чипе стерлась. Однако существует процесс, который может помочь вам снизить температуру процессора, называемый «андервольтинг».

Как установить Bing Daily Images в качестве обоев и экрана блокировки Windows 10

Как установить Bing Daily Images в качестве обоев и экрана блокировки Windows 10

Microsoft позволяет вам бесплатно загружать изображения Bing и использовать их в своей системе. Вот как установить Bing Daily Images в качестве обоев, экрана блокировки и экрана входа в систему в Windows 10.

Почему на диске значок замка и как его убрать?

Почему на диске значок замка и как его убрать?

Вам интересно, почему в проводнике на диске есть значок замка? В следующей статье будет объяснено, что это за значок и как удалить значок замка с диска в Windows 10.

Как добавить/удалить команду «Открыть в контекстном меню терминала Windows» в Windows 10

Как добавить/удалить команду «Открыть в контекстном меню терминала Windows» в Windows 10

После установки терминала Windows в контекстное меню папок в проводнике добавляется пункт «Открыть в терминале Windows». Если вас не устраивает эта опция, вот как удалить ее из контекстного меню.

Что такое атака «Человек на диске»?

Что такое атака «Человек на диске»?

Эта уязвимость позволяет злоумышленникам получить контроль над законными приложениями на вашем Android-устройстве и использовать их для внедрения вредоносных приложений.

Как отключить размытие фона экрана входа в систему в Windows 10

Как отключить размытие фона экрана входа в систему в Windows 10

Начиная с обновления Windows 10 за май 2019 года, на экране входа в систему используется размытый дизайн Fluent Design. Если вам нужны четкие обои экрана блокировки, вот как отключить размытие фона.

9 вещей, которые никогда не следует делать при использовании общедоступного Wi-Fi

9 вещей, которые никогда не следует делать при использовании общедоступного Wi-Fi

Лучший способ оставаться в безопасности при использовании общедоступного Wi-Fi — избегать действий, которые могут дать хакерам то, что они ищут.

Как установить интерфейс Dark Mode на любой экран Windows 10

Как установить интерфейс Dark Mode на любой экран Windows 10

Темный режим — это интерфейс с темным фоном в Windows 10, помогающий компьютеру экономить заряд батареи и уменьшать воздействие на глаза пользователя.

Какие меры безопасности следует использовать при оплате счетов онлайн?

Какие меры безопасности следует использовать при оплате счетов онлайн?

Оплата счетов онлайн — это удобный способ соблюдать свои обязательства перед поставщиками услуг. Однако этот вариант сопряжен с некоторыми рисками безопасности платежей.

Красивые обои Дораэмон для компьютеров и телефонов

Красивые обои Дораэмон для компьютеров и телефонов

Вот обои Doraemon для смартфонов и компьютеров разных цветов и разрешений.