Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Подделка cookies
 
 автор: osandr   (28.01.2008 в 03:35)   письмо автору
 
 

Здравствуйте!
Во-первых, хочу поблагодарить авторов М.Кузнецова и И.Симдянова за прекрасную книгу Самоучитель PHP5. Я ее купил два года назад, и нисколько не жалею. Очень хорошая книга, написана очень доступно для начинающего. Я теперь скрипты пишу на свой сайт. Только своими пользуюсь!
Я видел у вас тему о подделке cookies и сессий http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=9050, но я не понял как в ней написать сообщение. Поэтому извините, если эта тема лишний раз написана. У меня такая проблема. Я хочу написать скрипт, который будет постоянно (с помощью Cron) заходить на сайт знакомств. Вообщем, я хочу, чтобы скрипт за меня присутствовал на сайте. Я написал следующий код:
<?php
  $hostname 
"mamba.ru";
  
$path "/";

  
// Устанавливаем соединение, имя которого
  // передано в параметре $hostname
  
$fp fsockopen($hostname80$errno$errstr30);
  
// Проверяем успешность установки соединения
  
if (!$fp) echo "$errstr ($errno)<br />\n";
  else
  {
    
// Формируем HTTP-заголовки для передачи
    // его серверу
    
$headers "GET $path HTTP/1.1\r\n";
    
$headers .= "Host: $hostname\r\n";
    
$headers .= "Connection: Close\r\n\r\n";
    
// Отправляем HTTP-запрос серверу
    
fwrite($fp$headers);
    
// Получаем ответ
    
while (!feof($fp))
    {
      
$line fgets($fp1024);
      
// Ищем строку вида
      // Set-Cookie: PHPSESSID=6197e647566bdaa24da3ab42ae7604b2;
      // Именно она устанавливает cookie
      
preg_match("|Set-Cookie: s=([\d\w]+);|i",$line,$out);
      if(!empty(
$out[1]))
      {
        
$SID $out[1];
        break;
      }
    }
    
fclose($fp);
  }

  
$hostname "mamba.ru";
  
$path "/my/login.phtml";
  
$line "";

  
// Передаём методом POST имя пользователя (admin),
  // его пароль (admin), скрытое поле session_id ($SID)
  // В заголовках, передаём cookie PHPSESSID
  // Устанавливаем соединение, имя которого
  // передано в параметре $hostname
  
$fp fsockopen($hostname80$errno$errstr30);
  
// Проверяем успешность установки соединения
  
if (!$fp) echo "$errstr ($errno)<br />\n";
  else
  {
    
// Данные POST-запроса
    //$data = "name=admin&pass=admin&session_id=$SID&\r\n\r\n";
    
$data "oid=0&photo_oid=0&login_action=login&tcurl=&login=мой_логин&password=мой_пароль&session_id=$SID";
    
// Формируем HTTP-заголовки для передачи
    // его серверу
    
$headers "POST $path HTTP/1.1\r\n";
    
$headers .= "Host: $hostname\r\n";
    
$headers .= "Content-type: application/x-www-form-urlencoded\r\n";
    
$headers .= "Content-Length: ".strlen($data)."\r\n";
    
// Подделываем cookie
    
$headers .= "Cookie: PHPSESSID=$SID;\r\n";
    
$headers .= "Connection: Close\r\n\r\n";
    
// Отправляем HTTP-запрос серверу
    
fwrite($fp$headers.$data);
    
// Получаем ответ
    
while (!feof($fp))
    {
      
$line .= fgets($fp1024);
    }
    
fclose($fp);
  }
  echo 
$line;

 
?>

Но у меня он не авторизируется.
Я проанализировал как происходит вход на свою страничку.
Сначала я захожу на mamba.ru/tips/?tip=Login
Формируется идентификатор сессии s
Далее, если я использую полученный идентификатор, то введя адрес
http://mamba.ru/my/login.phtml?oid=0&photo_oid=0&login_action=login&tcurl=&login=мой_логин&password=мой_пароль&session_id=7Z85gucdkBY43GH7EoW_fID.1062mbbl
я попадаю на свою страничку. При этом я заметил появляется cookie LOGIN c value=мой_логин

На почту Cron присылает следующее письмо:
HTTP/1.1 302
Server: nginx/0.5.10
Date: Mon, 28 Jan 2008 00:19:27 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
P3P: policyref="http://www.mamba.ru/w3c/p3p.xml", CP="NOI DSP COR NID ADM DEV PSA OUR IND UNI PUR COM NAV INT STA"
Expires: Mon, 26 Jul 1997 05:00:00 GMT
Last-Modified: Mon, 28 Jan 2008 00:19:27 GMT
Cache-Control: post-check=0, pre-check=0
Pragma: no-cache
Cache-control: private
Set-Cookie: s=vpaIlG0lxZQWmCi8NvcRV0fyc0Pb6tsN; path=/; domain=.mamba.ru
Set-Cookie: UID=deleted; expires=Sun, 28 Jan 2007 00:19:26 GMT; path=/; domain=.mamba.ru
Set-Cookie: SECRET=deleted; expires=Sun, 28 Jan 2007 00:19:26 GMT; path=/; domain=.mamba.ru
Set-Cookie: LEVEL=deleted; expires=Sun, 28 Jan 2007 00:19:26 GMT; path=/; domain=.mamba.ru
Set-Cookie: LOGIN=deleted; expires=Sun, 28 Jan 2007 00:19:26 GMT; path=/; domain=.mamba.ru
Set-Cookie: UID=deleted; expires=Sun, 28 Jan 2007 00:19:26 GMT; path=/; domain=.mamba.ru
Set-Cookie: SECRET=deleted; expires=Sun, 28 Jan 2007 00:19:26 GMT; path=/; domain=.mamba.ru
Set-Cookie: TIMEZONE=deleted; expires=Sun, 28 Jan 2007 00:19:26 GMT; path=/; domain=.mamba.ru
Set-Cookie: UID=deleted; expires=Sun, 28 Jan 2007 00:19:26 GMT; path=/; domain=.mamba.ru
Set-Cookie: SECRET=deleted; expires=Sun, 28 Jan 2007 00:19:26 GMT; path=/; domain=.mamba.ru
Set-Cookie: LEVEL=deleted; expires=Sun, 28 Jan 2007 00:19:26 GMT; path=/; domain=.mamba.ru
Location: http://mamba.ru/my/?sold=vpaIlG0lxZQWmCi8NvcRV0fyc0Pb6tsN

1eb
<html>
<head>
  <title>Status 302 - документ перемещен</title>
</head>
<body bgcolor=#ffffff text=#000000 link=#ff0000 alink=#ff0000 vlink=#ff0000>
<script language="JavaScript">
<!--
 window.location.href='http://mamba.ru/my/?sold=vpaIlG0lxZQWmCi8NvcRV0fyc0Pb6tsN';

//-->

</script>
Документ перемещен: <a href="http://mamba.ru/my/?sold=vpaIlG0lxZQWmCi8NvcRV0fyc0Pb6tsN">http://mamba.ru/my/?sold=vpaIlG0lxZQWmCi8NvcRV0fyc0Pb6tsN</a><br><br>
</body>
</html>

0

Я не знаю в чем дело. Я с этим не оченб дружу. Помогите, пожалуйста.
Заранее спасибо!

   
 
 автор: SnooPI   (28.01.2008 в 04:15)   письмо автору
 
   для: osandr   (28.01.2008 в 03:35)
 

Кусок авторегера на мамбе:

<?php
function get_img($cookies$s)
    {
        for(
$i 0;$i 10$i++)
        {
            
$r    curl_get_img("http://mamba.ru/my/reg.phtml?image=1&sold=$s"$cookies"""""");
            
$fp    fopen($i.".jpg","w+");
            
fputs($fp$r);
            
$i 1;
        }
    }

    function 
get_reg_page()
    {
        
$r    =    curl_get("http://mamba.ru/my/reg.phtml?1=1&set_cookies=no","","http://mamba.ru/my/reg.phtml","","");
        
$fp    =    fopen("1.txt","w+");
        
fputs($fp,$r);
        
$r    =    explode("|||",$r);
        return 
$r[1];
    }

    function 
do_reg($cookies$code)
    {
        global 
$name;
        global 
$dlogin;
        global 
$login;
        global 
$mail;

        
$query    "SELECT * FROM `options` LIMIT 1";
        
$result    query($query);
        
$row    mysql_fetch_array($result);
        
$pass    htmlspecialchars($row['pass']);
        
$fp        file('data/city.txt');
        
$city    $fp[rand(0,(count($fp)-1))];
        if(
$_POST['sex'] == 'm'$sex "M";
        if(
$_POST['sex'] == 'f'$sex "F";
        if(
$_POST['birth'] == '2'$birth rand(date("Y",time())-20,date("Y",time())-18);
        if(
$_POST['birth'] == '3'$birth rand(date("Y",time())-25,date("Y",time())-20);
        if(
$_POST['birth'] == '4'$birth rand(date("Y",time())-30,date("Y",time())-25);
        if(
$_POST['birth'] == '5'$birth rand(date("Y",time())-40,date("Y",time())-30);
        if(
$_POST['birth'] == '6'$birth rand(date("Y",time())-50,date("Y",time())-40);
        if(
$_POST['birth'] == '7'$birth rand(date("Y",time())-80,date("Y",time())-50);
        
$r        curl_get("http://mamba.ru/my/reg.phtml"$cookies"http://mamba.ru/my/reg.phtml","action=post&tcurl=&noerror=0&login=$login&genpass=0&password1=$pass&textpassword1=&password2=$pass&textpassword2=&email=$mail&name=$name&gender=$sex&birthday=".rand(10,20)."&birthmonth=0".rand(10,12)."&birthyear=".$birth."&city=$city&zipcode=&lookfor%5Bm%5D=on&check=$code&condition_accepted=1","");
        
$fp        fopen("3.txt","w+");
        
fputs($fp$r);
        if(
strpos($r,'reg.phtml?image=1') == 0)
        {
            
$query    "INSERT INTO `users` VALUES (NULL, '".clear($login)."', '".clear($pass)."')";
            
$result    mysql_query($query);
            if(
$result)
            {
                echo 
$login."<br/>";
            }
        }
        else
        {
            echo 
"False<br/>";
        }
    }

    function 
curl_get($url$cookies$ref$post$proxy)
    {
        
$cr    curl_init($url);
        
curl_setopt($crCURLOPT_USERAGENT"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)");
        
curl_setopt($crCURLOPT_HTTP_VERSIONCURL_HTTP_VERSION_1_0);
        
curl_setopt($crCURLOPT_RETURNTRANSFER1);
        
curl_setopt($crCURLOPT_REFERER$ref);
        
curl_setopt($crCURLOPT_HEADER1);
        
curl_setopt($crCURLOPT_TIMEOUT50);
        
curl_setopt($crCURLOPT_COOKIE$cookies);
        
curl_setopt($crCURLOPT_PROXY"");
         
curl_setopt($crCURLOPT_SSL_VERIFYPEERfalse);
        
curl_setopt($crCURLOPT_SSL_VERIFYHOST0);
        if(
$post <> "")
        {
        
curl_setopt($crCURLOPT_POST1);
        
curl_setopt($crCURLOPT_POSTFIELDS$post);
        }
        
$r curl_exec($cr);
        if(
curl_error($cr))
        {
            return 
"error";
            exit;
        }
        
curl_close($cr);
        
$cookies "";
        
$cook explode("Set-Cookie:",$r);
        if(
count($cook) <> 1)
        for(
$i=1;$i<count($cook);$i++)
        
$cookies.=SubStR($cook[$i],0,StrPos($cook[$i],";")+1);
        
//$r = str_replace('</td><td><img align="left" src="', '</td><td><img align="left" src="1.jpg', $r);
        
return $r."|||".$cookies;
    }

    function 
curl_get_img($url,$cookies,$ref,$post,$proxy)
    {
        
$cr curl_init($url);
        
curl_setopt($crCURLOPT_USERAGENT"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)");
        
curl_setopt($crCURLOPT_HTTP_VERSIONCURL_HTTP_VERSION_1_0);
        
curl_setopt($crCURLOPT_RETURNTRANSFER1);
        
curl_setopt($crCURLOPT_REFERER$ref);
        
// curl_setopt($cr, CURLOPT_HEADER, 1);
        
curl_setopt($crCURLOPT_TIMEOUT150);
        
curl_setopt($crCURLOPT_COOKIE$cookies);
        
curl_setopt($crCURLOPT_PROXY"");
         
curl_setopt($crCURLOPT_SSL_VERIFYPEERfalse);
        
curl_setopt($crCURLOPT_SSL_VERIFYHOST0);
        if(
$post <> "")
        {
            
curl_setopt($crCURLOPT_POST1);
            
curl_setopt($crCURLOPT_POSTFIELDS$post);
        }
        
$r curl_exec($cr);
        if (
curl_error($cr))
        {
            return 
"error";
            exit;
        }
        
curl_close($cr);
        
$cookies "";
        
$cook explode("Set-Cookie:",$r);
        if(
count($cook) <> 1)
        for (
$i 1;$i count($cook); $i++)
        
$cookies .= substr($cook[$i],0,strpos($cook[$i],";")+1);
        return 
$r;
    }
?>


<?php
$cookies    
get_reg_page();
                
$s            substr($cookies,0,strpos($cookies,';'));
                
$s            substr($s,strpos($s,'=')+1,strlen($s));
?>

   
 
 автор: osandr   (28.01.2008 в 15:22)   письмо автору
 
   для: SnooPI   (28.01.2008 в 04:15)
 

Спасибо! Сейчас посмотрю.

   
 
 автор: osandr   (30.01.2008 в 02:01)   письмо автору
 
   для: osandr   (28.01.2008 в 15:22)
 

Честно говоря, не очень понял какие переменные нужно передавать и какому скрипту. Скрипту reg.php ?

   
 
 автор: osandr   (06.02.2008 в 00:25)   письмо автору
 
   для: osandr   (30.01.2008 в 02:01)
 

Мне нужно, чтобы скрипт авторизировался, а не регистрировался на сайте.

   
 
 автор: osandr   (09.02.2008 в 04:32)   письмо автору
 
   для: osandr   (06.02.2008 в 00:25)
 

Людиииии!!!!
Здесь есть кто-нибудь? Скажите что-нибудь....
Я пытался также с помощью скрипта заходить http://mamba.ru/my/access.phtml?oid=xxxxxxx&secret=xxxxxx&goto=newmessages. Ситуация похожая. Скрипт на мамбе пытается перекинуть меня на страницу http://mamba.ru/my/redirect.phtml?goto=newmessages&sold=vu2xNrI6ojkerSIeOHrsdTzhqEs8aajS
Я пытаюсь в своем скрипте перейти на эту страницу с полученными ранише cookie, но меня выбрасывает на страницу входа.
Вот и выше похожая ситуация:
Location: http://mamba.ru/my/?sold=vpaIlG0lxZQWmCi8NvcRV0fyc0Pb6tsN
Подскажите как мне перейти на эту страницу программно.
Везде я указывал referer.

   
 
 автор: osandr   (09.02.2008 в 18:13)   письмо автору
 
   для: osandr   (09.02.2008 в 04:32)
 

Огромное всем спасибо!!! Я раньше ничего не знал про функции CURL :) Сегодня только понял.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования