[Benchmark] MySql Data Dumper

Discussion in 'Уязвимости' started by daniel_1024, 5 Sep 2010.

  1. daniel_1024

    daniel_1024 Elder - Старейшина

    Joined:
    15 Jul 2009
    Messages:
    260
    Likes Received:
    227
    Reputations:
    386
    Посмотрев видео kamaz`a Cookies & headers SQL injection я очень заинтересовался его методом вывода данных через BENCHMARK. Главное преимущество этого метода в том, что для узнавания таблиц, колонок, дампа данных и т.д. требуется только один запрос.
    Чтобы не составлять громадные запросы для вывода данных вручную я написал этот скрипт - [Benchmark] MySql Data Dumper.

    [​IMG]

    Рассмотрим конфиг программы:
    Code:
    #####################################
    my $url = "http://xxx.ru/my/compare.php?id=666+and+1=0+union+select+1,^";
    my $com = "--";
    my $useragent = "Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.2.8) Gecko/20100723 Ubuntu/9.10 (karmic) Firefox/3.6.8";
    my $dbg = 0;
    #####################################
    $url - инъекция, принтабельное поле заменить на " ^ "
    $com - комментарий к инъекции "--", "/*" и др.
    $useragent - значение юзерагента
    $dbg - дебаг, по умолчанию выключен.
    Плюсы этого скрипта и метода в целом:

    [+] очень мало записей в логах
    [+] всё делается очень быстро
    [+] возможность вывода баз, таблиц, колонок и значений.
    [+] сохранение в файл

    [-] при большом количестве выводимых данных - сильная нагрузка на сервер.
    [-] пока - скрипт работает через GET
    [-] версия MySql должна быть >= 4.1
    [-] иногда Benchmark бывает нестабилен, или count(*) выдает неверное значение

    ВНИМАНИЕ !​

    При дампе значений скрипт спрашивает, относительно чего производить сортировку в цикле бенчмарка. Сортировку надо производить строго по уникальным значениям, "id", к примеру.
    Если сортировать по паролю, возможна ситуация что у нескольких пользователей один и тот же пароль, и в этом случае, в место двух записей мы получим одну, и всё дальнейшее действие бенчмарка будет нарушено и не вернёт нужный результат.
    То есть, если надо сдампить логины и пароли, то вводим "username,password,id" и после выбираем:
    "Order by id".

    Скачать: benchmark_dumper.pl

    P.S для дампа больших объёмов данных - к примеру, если надо сдампить 20к юзеров, советую использовать исключительно этот скрипт
     
    #1 daniel_1024, 5 Sep 2010
    Last edited: 22 Jun 2011
    14 people like this.
  2. tracy

    tracy Elder - Старейшина

    Joined:
    24 Mar 2009
    Messages:
    244
    Likes Received:
    119
    Reputations:
    40
    Перелей на другой ХФ
     
  3. Blizzard

    Blizzard Member

    Joined:
    27 Jul 2010
    Messages:
    16
    Likes Received:
    16
    Reputations:
    0
    а как составить запрос для вывода данных, если принтабельное поле:
    site.com/index.php?id=-1+union+select+1,2,'Здесь',4

    сам разобрался :)
    Code:
    +union select 1,2,concat(@i:=0x00,@o:=0x0d0a,benchmark(1450,@o:=CONCAT(@o,0x0d0a,(SELECT concat(@i:=mail,0x3a,password) from customers WHERE mail>@i order by mail LIMIT 1))),@o),4
     
    #3 Blizzard, 5 Sep 2010
    Last edited: 5 Sep 2010
  4. daniel_1024

    daniel_1024 Elder - Старейшина

    Joined:
    15 Jul 2009
    Messages:
    260
    Likes Received:
    227
    Reputations:
    386
    site.com/index.php?id=-1+union+select+1,2,^,4
     
  5. kamaz

    kamaz Elder - Старейшина

    Joined:
    31 Jan 2007
    Messages:
    151
    Likes Received:
    275
    Reputations:
    280
    Также не советую злоупотреблять количеством одновременно выводимых таблиц.
    Бо бенчмарк может запросто положить сервер (и иногда намеренно используется именно для этих целей в запросах вида
    Code:
    benchmark(100000, md5('qwerty'))
    )

    Поэтому, во избежании излишней нагрузки на сервер, рекомендую выводить, допустим, не 1 раз на 10000 а 4 раза по 2000 записей.
     
    5 people like this.
  6. daniel_1024

    daniel_1024 Elder - Старейшина

    Joined:
    15 Jul 2009
    Messages:
    260
    Likes Received:
    227
    Reputations:
    386
    kamaz, время выполнения бенчмарка оочень сильно зависит от хоста, на котором выполняется.
    как пример, я нашел сайт, который выводил 20к записей за 10-15 секунд, и сайт, который выводил названия четырёх таблиц около минут =))
     
    3 people like this.
  7. $CR00G€

    $CR00G€ New Member

    Joined:
    5 May 2011
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    Помогите разобраться, пытаюсь сдампить БД юзеров в 24к но Benchmark вылетает и не чего не дампит.
    Формат ввожу такой:
    db.tbl затем название колонок которые нужно сдампить:
    c_email,c_firstname,c_lastname,c_id
    Далее вылетает:
    Order by ... ?
    [0] c_email
    [1] c_firstname
    [2] c_lastname
    [3] c_id

    Ввожу c_id
    Немного подумав он закрывается.

    Пробовал дампить по одной колонке, c_id он дампит нормально, но любые другие колонки не дампит.

    Подскажите плиз в чем трабла ?
     
  8. satana8920

    satana8920 Палач Античата

    Joined:
    22 Sep 2006
    Messages:
    396
    Likes Received:
    138
    Reputations:
    6
    Да такая же проблема вывожу и она закрываеться в чем проблема ? как исправить?
     
  9. daniel_1024

    daniel_1024 Elder - Старейшина

    Joined:
    15 Jul 2009
    Messages:
    260
    Likes Received:
    227
    Reputations:
    386
    Этот метод не универсален, поэтому возможна неправильная работа скрипта. Можно попробовать составить запрос вручную.