Работа С СУБД Через Иньекцию Запроса. Сегодня я хочу поговорить о совешенствовании sql иньекций. В статье не будет новых способов применения sql иньекций а будут показаныы некоторые примеры запросов к базе данных которые можно применять в иньекциях. Часть 1 Дамп базы(на примере MSSQL). Начнем с того что некоторые часто упускают с поиска баз используя только поиск таблиц. Как правило администраторы создают 1 юзера на 1 или несколько баз. Для того что бы посмотреть текущие базы обратимся к такой табличке master это системная таблица и присутсвует во всех версиях mssql. Рассмотрим запрос: Данным запросом мы прочтем 1 запись, название 1 таблицы, но это не все что я хотел рассказать, у многих быват сложности по выводу данных из базы данных. Так как дамп базы практически главное за чем начинаем взлом. И так начнем. Для примера будем выводить данные из master..sysdatabases. Какие сопсобы у нас есть? Ну самое банальное что может прийти в голову Но мы можем смотреть только по 1 строчке. Поэтому нам надо составить какое то условие или же просто применить аналог лимита. Вот что используеться обычно это долго и неэфиктивно на мой взгляд должно соблюдаться много правил. Посмотрим другие примеры. Используем Аналог лимита. Используем Контрольную сумму и сделаем сортировку по ней от меньего к большему. Теперь мы можем свободно перемещаться по базе данных. Все что нам надо написать небольшой скрипт отпрвляющий пакет и меняющий в нем данные. Далее Есть банальный вариант но это если только есть колонка id пронумерованная по порядку. Часть 2 Обход Фильтров. Начнем с банального иногда !"№;%:?*()_= символы в запросе могут шифроваться. Могут появиться ошибки поэтому данные символы стоит преобпразовывать в 16 код и посылать в так называемое url кодировке. Далее символ ' могут быть заменены на () или []. Данной фильтрацией можно обходить пробелы используя непрерывнй подзапрос. Данный вид обхода фильтра исползуеться при фильтрации кавычек какаих либо функциях например xp_cmdshell Добавит юзера hack без пароля если будет открыт порт ремот декспота то мы сразу сможем заджойниться туда под этим логином и пассом. Фильтрацию пробелов можно обойти примерно так. Обхода фильтрации по регулярным выражениям передаваемым серверу я не нашел.(ps привет админам с хакер ру). В некоторых случаях обход возможен посылкой пакета другим способом POST, HEAD при посылке пакета методом HEAD мы уидим только заголок пакета без данных но запрос исполниться. Статья написанна только для ознакомления с языком запросов SQL. Материалы приведенные выше будут актуальны на большинстве современных субд, учитывая их архитектуру.
Понравился аналог лимита, не знал про конструкцию top ... start at .., а так же обход ковычек. Что касается статьи, то имхо мало, 2 часть только про хекс и ковычки - все. Вся статья про MSSQL, название не соответствует содержанию в полном объеме. Мне кажется надо либо добавить в старую статью про "Проведение инъекций в MSSQL", либо надо расписывать и про другие СУБД и методы. ЗЫ Объективный взгляд, конструктивное предложение, ничего личного
Сюдя по твоему посту ты нефига не понял. Я не писал про определенную СУБД я писал про SQL как язык.Методы описанные будут работать на oracle mysql mssql pgsql sybase
Собствено здесь понимать нечего - использование top... в MSSQL, аналог лимита мускула и rownum в оракл + обход ковычек c пом. непррерывного () или [] + хекс, вот и все в одну строчку. По сути дамп базы есть в любом посте в разделе sql инъекции, во фразе "далее юзаем лимит". Не будут, например в MySQL версии<5, т.к. нет таблицы IN FORMATION_SCHEMA.TABLES где есть имена таблиц или master..sysdatabases где имена БД. Т.е. не зная конкретных имен хрен, что сольешь! Так же в мускуле и постгре нет возможности добавить пользователя через инъекцию. Так что не надо обобщать... ЗЫ Я просто предположил, это чисто мое имхо Дело твое, хотел как лучше.
Да причем тут базы данных и вообще понимаешь что SQL это язык причем тут базы данных. Статья написанна по SQL:2003 (Стандарт ANSI) и SQL Server 2005 (Yukon) и PL/SQL (Procedural Language / Structured Query Language). Последнии 2 очень похожи, И большинство фишек работают на всех Язык независимо от базы данных, Другое дело что определенные базы данных работают на своих Стандартах, Можно встретить очень много модификаций и даже самопальных языков и баз. К чему твои коментарии я не пойму чего ты хочешь. Пойми хотя бы почему это работает, раз ты такой умный обясни мне.
Согласен, собствено это я и имел ввиду, стандарт один, а реализации все таки разные, по- этому нельзя говорить например об универсальном методе дампа через Sql для всех СУБД, для каждый надо писать отдельный пример... ЗЫ кстати у тя случайно нет самого документа (SQL2003 ANSI) , а то нашел тока БНФ грамматику под стандарт.