Авторизация на форуме

Тема в разделе "PHP", создана пользователем phillip, 10 окт 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. phillip

    phillip

    Регистр.:
    4 сен 2007
    Сообщения:
    413
    Симпатии:
    15
    Пробую курлом авторизоваться на форуме- не выходит. Помогите, пожалуйста!
    адрес страницы с авторизацией Перейти по ссылке
    логин try_or_die
    пасс nulled
    PHP:
    <?php
    ini_set
    ('display_errors',1);
    error_reporting(E_ALL);
    $login      'try_or_die';
    $password   'nulled';
    $login_url         'http://forums.goha.ru/usercp.php';
    $login_var_name    'vb_login_username';
    $password_var_name 'vb_login_password';
    $user_cookie_file $_SERVER['DOCUMENT_ROOT'].'/cookies/admin.txt';
    $user_agent "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; (R1 1.5))";
    if (!
    $ch curl_init())
    {
        echo 
    curl_error($ch);
        exit;
    }
    $post_fields "$login_var_name=$login&$password_var_name=$password";
    curl_setopt($chCURLOPT_URL$login_url);
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
    curl_setopt($chCURLOPT_VERBOSE1);
    curl_setopt($chCURLOPT_FOLLOWLOCATION1);
    curl_setopt($chCURLOPT_USERAGENT$user_agent);
    curl_setopt($chCURLOPT_REFERER,   'http://forums.goha.ru');
    curl_setopt($chCURLOPT_COOKIEFILE$user_cookie_file);
    curl_setopt($chCURLOPT_COOKIEJAR,  $user_cookie_file);
    curl_setopt($chCURLOPT_POST1);
    curl_setopt($chCURLOPT_POSTFIELDS$post_fields);
    $content curl_exec($ch);
    curl_close($ch);
    echo 
    $content;
    ?>
    Вроде уже и названия полей указал. Как вообще курлом работать- до сих пор не научился и понять никак не могу :bc:
     
  2. omega

    omega Создатель

    Регистр.:
    21 янв 2008
    Сообщения:
    30
    Симпатии:
    10
    Попробуй поменяй
    PHP:
    $login_url         'http://forums.goha.ru/usercp.php'
    на
    PHP:
    $login_url         'http://forums.goha.ru/10gin.php?do=login';
     
  3. phillip

    phillip

    Регистр.:
    4 сен 2007
    Сообщения:
    413
    Симпатии:
    15
    не помогло :nezn:
     
  4. omega

    omega Создатель

    Регистр.:
    21 янв 2008
    Сообщения:
    30
    Симпатии:
    10
    По исходнику видно:
    Код:
    <form onsubmit="md5hash(vb_login_password, vb_login_md5password, vb_login_md5password_utf, 0)" method="post" action="10gin.php?do=login">
    <input type="hidden" value="login" name="do"/>
    <input type="hidden" value="/usercp.php" name="url"/>
    <input type="hidden" name="vb_login_md5password" value="b0d44166ce723529656c8ce8d23e6580"/>
    <input type="hidden" name="vb_login_md5password_utf" value="71f5a035da06148061cfcaa82fbc79bd"/>
    <input type="hidden" value="9fd72addecddffc7b1089e3fc0fc7bcc" name="s"/>
    <input type="hidden" value="guest" name="securitytoken"/>
    
    Тоесть там поля вродебы по md5 кодятся.
     
    phillip нравится это.
  5. phillip

    phillip

    Регистр.:
    4 сен 2007
    Сообщения:
    413
    Симпатии:
    15
    Включил в лисе перехват заголовков, посмотрел названия. Вышло вот чего:
    PHP:
    <?php 
    ini_set
    ('display_errors',1); 
    error_reporting(E_ALL); 
    $login      'try_or_die'
    $password   md5('nulled'); 
    $login_url         'http://forums.goha.ru/10gin.php?do=login'

    $user_cookie_file $_SERVER['DOCUMENT_ROOT'].'/cookies/admin.txt'
    $user_agent "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; (R1 1.5))"
    if (!
    $ch curl_init()) 

        echo 
    curl_error($ch); 
        exit; 

    $post_fields "vb_login_username=$login&vb_login_md5password=$password&vb_login_md5password_utf=$password"
    curl_setopt($chCURLOPT_URL$login_url); 
    curl_setopt($chCURLOPT_RETURNTRANSFER1); 
    curl_setopt($chCURLOPT_VERBOSE1); 
    curl_setopt($chCURLOPT_FOLLOWLOCATION1); 
    curl_setopt($chCURLOPT_USERAGENT$user_agent); 
    curl_setopt($chCURLOPT_REFERER,   'http://forums.goha.ru'); 
    curl_setopt($chCURLOPT_COOKIEFILE$user_cookie_file); 
    curl_setopt($chCURLOPT_COOKIEJAR,  $user_cookie_file); 
    curl_setopt($chCURLOPT_POST1); 
    curl_setopt($chCURLOPT_POSTFIELDS$post_fields); 
    $content curl_exec($ch); 
    curl_close($ch); 
    echo 
    $content
    ?>
    не работает =(
    Я вот думаю не зря там сделано ведь два разных значения
    vb_login_md5password_utf
    vb_login_md5password
    я подставил просто одно и то же, потому что увидел что в лисе передается и первое и второе одинаковое. Может в пхп надо иначе?
     
  6. omega

    omega Создатель

    Регистр.:
    21 янв 2008
    Сообщения:
    30
    Симпатии:
    10
    Обрати внимание на функцию md5hash, при сабмите формы она срабатывает и присваивает значения этим полям. Я посмотрел исходники свиду функция сложная и если не ошибаюсь там еще как то завязано ид текущей сессии.
    Тоесть нужно получить страничку /usercp.php, из нее вытянуть ид сессии, потом используя этот ид закодировать пароль, и передать их в тех полях с помощью метода пост скрипту /10gin.php?do=login
     
    phillip нравится это.
  7. PromoFreem

    PromoFreem Создатель

    Регистр.:
    17 июн 2008
    Сообщения:
    30
    Симпатии:
    5
    Чтобы закодировать пароль нужно знать соль если я не ошибаюсь, но жаде сам пользователь не может знать соль своего аккаунта..
    также есть такая фишка как
    она как раз и отвечает за передач закроса непосредственно со страницы
     
  8. omega

    omega Создатель

    Регистр.:
    21 янв 2008
    Сообщения:
    30
    Симпатии:
    10
    Вот что пишут:

    I just set it up and seemed to have success (Test My Authetication URL looked good) with the following:

    Код:
    Auth URL: http://www.mysite.com/forums/login.php?do=login
    Auth method: POST
    Parameters:
    vb_login_username = <username>
    do = login
    vb_login_md5password = <md5hash>
    vb_login_md5password_utf = <md5hash>
    I was lazy and just got the md5 hash by watching what values my browser posts to my site upon login. One possible way to do that is to use the Live HTTP Headers extension for Firefox.
    Насколько я понимаю передачи этих параметров человеку было достаточно для авторизации, т.е. видимо я был не прав и ид сессии не используется !
    Поэтому просто сгенерируй эти параметры и передай скрипту 10gin.php?do=login
    Для генерации <md5hash> есть функция md5() в php.
     
  9. potuga

    potuga

    Регистр.:
    22 сен 2009
    Сообщения:
    376
    Симпатии:
    91
    Что-то вы намудрили:

    PHP:
    <?

    $login 'try_or_die';
    $password 'nulled';

    $query = array (
        
    'do' => 'login',
        
    'url' => '/usercp.php',
        
    'vb_login_md5password' => md5($password),
        
    'vb_login_md5password_utf' => md5($password),
        
    's' => '',
        
    'securitytoken' => 'guest',
        
    'vb_login_username' => $login,
        
    'vb_login_password' => '',

      );
      
    $query_str http_build_query($query);

      
    $url 'http://forums.goha.ru/10gin.php';
      
    $agent 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:1.7.12) Gecko/20050919 Firefox/1.0.7';
      
    $header[] = "Accept: text/html;q=0.9, text/plain;q=0.8, image/png, */*;q=0.5" ;
      
    $header[] = "Accept_charset: windows-1251, utf-8, utf-16;q=0.6, *;q=0.1";
      
    $header[] = "Accept_encoding: identity";
      
    $header[] = "Accept_language: en-us,en;q=0.5";
      
    $header[] = "Connection: close";
      
    $header[] = "Cache-Control: no-store, no-cache, must-revalidate";
      
    $header[] = "Keep_alive: 300";
      
    $header[] = "Expires: Thu, 01 Jan 1970 00:00:01 GMT";

      
    $ch curl_init(); 
      
    curl_setopt($chCURLOPT_URL,$url); 
      
    curl_setopt($chCURLOPT_HEADER1);
      
    curl_setopt($chCURLOPT_FOLLOWLOCATION1);
      
    curl_setopt($chCURLOPT_RETURNTRANSFER,1); 
      
    curl_setopt($chCURLOPT_TIMEOUT30);
      
    curl_setopt ($chCURLOPT_SSL_VERIFYPEERFALSE); 
      
    curl_setopt($chCURLOPT_POST1);
      
    curl_setopt($chCURLOPT_POSTFIELDS$query_str);
      
    curl_setopt $ch CURLOPT_USERAGENT $agent);
      
    curl_setopt $ch CURLOPT_HTTPHEADER $header);
      
    curl_setopt($chCURLOPT_COOKIEJAR'cookie.txt');
      
    curl_setopt($chCURLOPT_COOKIEFILE'cookie.txt');
      
    $text curl_exec($ch);
      
    curl_close($ch);        

      
    preg_match('|URL=(.*)"|'$text$out);
      
    $url $out[1];

      
    $ch curl_init(); 
      
    curl_setopt($chCURLOPT_URL,$url);
      
    curl_setopt($chCURLOPT_HEADER1);
      
    curl_setopt($chCURLOPT_FOLLOWLOCATION1);
      
    curl_setopt($chCURLOPT_RETURNTRANSFER,1); 
      
    curl_setopt($chCURLOPT_TIMEOUT10);
      
    curl_setopt ($chCURLOPT_SSL_VERIFYPEERFALSE); 
      
    curl_setopt $ch CURLOPT_USERAGENT $agent);
      
    curl_setopt $ch CURLOPT_HTTPHEADER $header);
      
    curl_setopt($chCURLOPT_COOKIEJAR'cookie.txt');
      
    curl_setopt($chCURLOPT_COOKIEFILE'cookie.txt');
      
    $result curl_exec($ch);
      
    curl_close($ch);

      echo 
    $result;

    ?>
    Вот и все
     
    sexyboy, omega и phillip нравится это.
  10. phillip

    phillip

    Регистр.:
    4 сен 2007
    Сообщения:
    413
    Симпатии:
    15
    я тут попробовал на другом ресурсе авторизоваться и оставить сообщение. авторизация норм вышла, а когда оставлял меседж то чот не работает

    PHP:
    $query = array ( 
                
    'title' => 'test',
                
    'description' => 'test',
               );
    так норм работает, а если вместо test подставляю переменные- отказывается. в чем может быть дело?(

    PHP:
    $query = array ( 
                
    'title' => $title,
                
    'description' => $desc,
               );
    по поводу рассмотренного нами буллетина- авторизация успешна, а как опять же меседж оставить? при отправке сообщения я включаю перехват данных, оптравляемых серверу, и мозилла перехватывает значения которые я не знаю как генерировать на автомате. Помогите разобраться, пожалуйста :bc:
     
Статус темы:
Закрыта.