guest3297
04.07.2007, 23:42
Работа С СУБД Через Иньекцию Запроса.
Сегодня я хочу поговорить о совешенствовании sql иньекций. В статье не будет новых способов применения sql иньекций а будут показаныы некоторые примеры запросов к базе данных которые можно применять в иньекциях.
Часть 1 Дамп базы(на примере MSSQL).
Начнем с того что некоторые часто упускают с поиска баз используя только поиск таблиц. Как правило администраторы создают 1 юзера на 1 или несколько баз. Для того что бы посмотреть текущие базы обратимся к такой табличке master это системная таблица и присутсвует во всех версиях mssql.
Рассмотрим запрос:
select top 1 name from master..sysdatabases
Данным запросом мы прочтем 1 запись, название 1 таблицы, но это не все что я хотел рассказать, у многих быват сложности по выводу данных из базы данных. Так как дамп базы практически главное за чем начинаем взлом. И так начнем. Для примера будем выводить данные из master..sysdatabases. Какие сопсобы у нас есть? Ну самое банальное что может прийти в голову
select top 100 name from master..sysdatabases
Но мы можем смотреть только по 1 строчке. Поэтому нам надо составить какое то условие или же просто применить аналог лимита.
select top 1 name from master..sysdatabases where not in ('name1')
Вот что используеться обычно это долго и неэфиктивно на мой взгляд должно соблюдаться много правил. Посмотрим другие примеры.
Используем Аналог лимита.
select top 2 start at 1 name from master..sysdatabases
Используем Контрольную сумму и сделаем сортировку по ней от меньего к большему.
select top 1 name from master..sysdatabases where checksum(*)>-9999999999999999999999999999 order by checksum(*)
Теперь мы можем свободно перемещаться по базе данных. Все что нам надо написать небольшой скрипт отпрвляющий пакет и меняющий в нем данные.
Далее Есть банальный вариант но это если только есть колонка id пронумерованная по порядку.
select top 1 from master..sysdatabases where id=2
Часть 2 Обход Фильтров.
Начнем с банального иногда !"№;%:?*()_= символы в запросе могут шифроваться. Могут появиться ошибки поэтому данные символы стоит преобпразовывать в 16 код и посылать в так называемое url кодировке.
Далее символ ' могут быть заменены на () или []. Данной фильтрацией можно обходить пробелы используя непрерывнй подзапрос. Данный вид обхода фильтра исползуеться при фильтрации кавычек какаих либо функциях например xp_cmdshell
xp_cmdshell [NET USER hack password /ADD]
xp_cmdshell [NET LOCALGROUP /ADD Administrators hack]
Добавит юзера hack без пароля если будет открыт порт ремот декспота то мы сразу сможем заджойниться туда под этим логином и пассом.
Фильтрацию пробелов можно обойти примерно так.
select(column1),(column2)from(table1)where(column2 )=100
Обхода фильтрации по регулярным выражениям передаваемым серверу я не нашел.(ps привет админам с хакер ру). В некоторых случаях обход возможен посылкой пакета другим способом POST, HEAD при посылке пакета методом HEAD мы уидим только заголок пакета без данных но запрос исполниться.
Статья написанна только для ознакомления с языком запросов SQL. Материалы приведенные выше будут актуальны на большинстве современных субд, учитывая их архитектуру.
Сегодня я хочу поговорить о совешенствовании sql иньекций. В статье не будет новых способов применения sql иньекций а будут показаныы некоторые примеры запросов к базе данных которые можно применять в иньекциях.
Часть 1 Дамп базы(на примере MSSQL).
Начнем с того что некоторые часто упускают с поиска баз используя только поиск таблиц. Как правило администраторы создают 1 юзера на 1 или несколько баз. Для того что бы посмотреть текущие базы обратимся к такой табличке master это системная таблица и присутсвует во всех версиях mssql.
Рассмотрим запрос:
select top 1 name from master..sysdatabases
Данным запросом мы прочтем 1 запись, название 1 таблицы, но это не все что я хотел рассказать, у многих быват сложности по выводу данных из базы данных. Так как дамп базы практически главное за чем начинаем взлом. И так начнем. Для примера будем выводить данные из master..sysdatabases. Какие сопсобы у нас есть? Ну самое банальное что может прийти в голову
select top 100 name from master..sysdatabases
Но мы можем смотреть только по 1 строчке. Поэтому нам надо составить какое то условие или же просто применить аналог лимита.
select top 1 name from master..sysdatabases where not in ('name1')
Вот что используеться обычно это долго и неэфиктивно на мой взгляд должно соблюдаться много правил. Посмотрим другие примеры.
Используем Аналог лимита.
select top 2 start at 1 name from master..sysdatabases
Используем Контрольную сумму и сделаем сортировку по ней от меньего к большему.
select top 1 name from master..sysdatabases where checksum(*)>-9999999999999999999999999999 order by checksum(*)
Теперь мы можем свободно перемещаться по базе данных. Все что нам надо написать небольшой скрипт отпрвляющий пакет и меняющий в нем данные.
Далее Есть банальный вариант но это если только есть колонка id пронумерованная по порядку.
select top 1 from master..sysdatabases where id=2
Часть 2 Обход Фильтров.
Начнем с банального иногда !"№;%:?*()_= символы в запросе могут шифроваться. Могут появиться ошибки поэтому данные символы стоит преобпразовывать в 16 код и посылать в так называемое url кодировке.
Далее символ ' могут быть заменены на () или []. Данной фильтрацией можно обходить пробелы используя непрерывнй подзапрос. Данный вид обхода фильтра исползуеться при фильтрации кавычек какаих либо функциях например xp_cmdshell
xp_cmdshell [NET USER hack password /ADD]
xp_cmdshell [NET LOCALGROUP /ADD Administrators hack]
Добавит юзера hack без пароля если будет открыт порт ремот декспота то мы сразу сможем заджойниться туда под этим логином и пассом.
Фильтрацию пробелов можно обойти примерно так.
select(column1),(column2)from(table1)where(column2 )=100
Обхода фильтрации по регулярным выражениям передаваемым серверу я не нашел.(ps привет админам с хакер ру). В некоторых случаях обход возможен посылкой пакета другим способом POST, HEAD при посылке пакета методом HEAD мы уидим только заголок пакета без данных но запрос исполниться.
Статья написанна только для ознакомления с языком запросов SQL. Материалы приведенные выше будут актуальны на большинстве современных субд, учитывая их архитектуру.