Welcome!

By registering with us, you'll be able to discuss, share and private message with other members of our community.

SignUp Now!
  • Реклама на форуме платная! Обращаться к Admin.
    Произошла смена домена с maza.one на maza1.top!!!

Статья Гайд по SQL-инъекциям.

Статьи форума

Vasserman

Moderator of the MC Mazafaka
Команда форума
LV
0
 
Регистрация
Дек 22, 2023
Сообщения
119
Реакции
22
Награды
2
Этап 1: Определение уязвимого места.​
Для начала введите любой критерий поиска и добавьте кавычку. Если сайт выдает ошибку 500, это указывает на уязвимость. Закрыв оставшуюся часть запроса комментарием, вы сможете восстановить работу сайта.
Точка входа будет находиться между кавычкой и комментарием.
Обратите внимание, что комментарии могут различаться в зависимости от используемой СУБД. Например, для MySQL используется "#", а для SQLite — " -- ".

Этап 2: Определение количества запрашиваемых значений.​
Далее необходимо определить, сколько значений приложение извлекает из базы данных.
Запрос к базе данных, который извлекает сущности новостей, обычно использует оператор * (ALL). Это означает, что результатом запроса будут строки, содержащие все три поля: id, title, text.
Однако со стороны пользователя запрос не виден, поэтому невозможно сразу определить количество извлекаемых полей.
Для этого используется команда order by <x>. Она используется для сортировки и может помочь определить количество полей.

Подставьте в точку входа конструкцию:​
Код:
ORDER BY X

где x — предполагаемое количество полей.
Если вы передадите неверное значение x (больше, чем количество запрашиваемых полей), вы получите ошибку.

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

Этап 3: Определение отображения.​
После определения количества запрашиваемых полей необходимо узнать, какие поля на странице отображают результаты каких полей.

Например, если вы знаете, что количество запрашиваемых полей равно трем, можно использовать конструкцию:​
Код:
union select 1,2,3 –
В результате на странице вместо заголовка появится цифра 2, а вместо текста новости — цифра 3.

Это означает, что на страницу выводятся значения полей 2 и 3, что будет важно для следующего этапа.

Этап 4: Определение структуры базы данных.​
На этом этапе необходимо получить общее представление о структуре базы данных.

Это тесно связано с целью, поскольку дальнейшие действия будут зависеть от того, что вы хотите сделать (например, извлечь данные, удалить таблицу).

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

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

Для этого можно использовать различные методы, которые зависят от используемой СУБД.

Например, если приложение использует SQLite, можно использовать встроенную функцию sqlite_version(), которая характерна только для этой СУБД.

Подставьте функцию вместо поля 2:​
Код:
test’ union select 1,sqlite_version(),3 --
В результате на месте поля номер два вы увидите версию базы данных.
Это позволяет сделать два вывода: приложение использует SQLite, и вы можете использовать поля 2 и 3 для вывода нужных данных.
К сожалению, в отличие от других СУБД, SQLite не содержит системных таблиц с информацией о базах данных. Однако есть системная таблица sqlite_master, которая содержит информацию о других таблицах.

Чтобы извлечь имена таблиц, используйте следующий SQL-запрос:​
Код:
SELECT name FROM sqlite_master;
Теперь подставьте этот запрос в свой пейлоад с помощью union select.

Код:
test’ union select 1,name,3 from sqlite_master --
Если у вас есть доступ к системным таблицам, вы можете использовать их для поиска информации о таблице с пользователями.
Однако администратор может ограничить доступ к этим таблицам, поэтому иногда приходится действовать методом проб и ошибок.
Предположим, что таблица с пользователями называется "user".

Добавьте в конец своего union предполагаемое имя таблицы:​
Код:
union select 1,2,3 from user --
Если вы получите ошибку, значит такой таблицы не существует.
Попробуйте другое имя таблицы, например "Users".
Если запрос выполняется без ошибок, значит такая таблица существует.
Далее можно перейти к извлечению данных пользователей.
Для этого можно использовать метод проб и ошибок или вычислить поля через метаданные.

Вспомните таблицу с метаданными. Поле "sql" содержит команду для создания таблицы, в том числе и имена полей.

Попробуйте вывести в заголовок имя таблицы (name), а в описание — команду из поля "sql":​
Код:
test’ union select 1,name,sql from sqlite_master --

После получения необходимой информации можно перейти к финальному этапу — извлечению данных пользователей:​
Код:
test‘ union select 1,name,password from Users --
На месте заголовка будет отображаться имя пользователя, а на месте текста — пароль.

Теперь можно перейти к удалению таблицы с пользователями: ​
Код:
test’; drop table Users --

Обложка Эскобар.jpg​
 

Пинг форума и аптайм

Averaged results for https://maza.one

uptime counter
Назад
Сверху