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

Статус
В этой теме нельзя размещать новые ответы.

phillip

Полезный
Регистрация
4 Сен 2007
Сообщения
411
Реакции
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($ch, CURLOPT_URL, $login_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
curl_setopt($ch, CURLOPT_REFERER,   'http://forums.goha.ru');
curl_setopt($ch, CURLOPT_COOKIEFILE, $user_cookie_file);
curl_setopt($ch, CURLOPT_COOKIEJAR,  $user_cookie_file);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);
$content = curl_exec($ch);
curl_close($ch);
echo $content;
?>
Вроде уже и названия полей указал. Как вообще курлом работать- до сих пор не научился и понять никак не могу :bc:
 
Попробуй поменяй
PHP:
$login_url         = 'http://forums.goha.ru/usercp.php';
на
PHP:
$login_url         = 'http://forums.goha.ru/10gin.php?do=login';
 
не помогло :nezn:
 
По исходнику видно:
Код:
<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 кодятся.
 
Включил в лисе перехват заголовков, посмотрел названия. Вышло вот чего:
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($ch, CURLOPT_URL, $login_url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_VERBOSE, 1); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent); 
curl_setopt($ch, CURLOPT_REFERER,   'http://forums.goha.ru'); 
curl_setopt($ch, CURLOPT_COOKIEFILE, $user_cookie_file); 
curl_setopt($ch, CURLOPT_COOKIEJAR,  $user_cookie_file); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields); 
$content = curl_exec($ch); 
curl_close($ch); 
echo $content; 
?>
не работает =(
Я вот думаю не зря там сделано ведь два разных значения
vb_login_md5password_utf
vb_login_md5password
я подставил просто одно и то же, потому что увидел что в лисе передается и первое и второе одинаковое. Может в пхп надо иначе?
 
Обрати внимание на функцию md5hash, при сабмите формы она срабатывает и присваивает значения этим полям. Я посмотрел исходники свиду функция сложная и если не ошибаюсь там еще как то завязано ид текущей сессии.
Тоесть нужно получить страничку /usercp.php, из нее вытянуть ид сессии, потом используя этот ид закодировать пароль, и передать их в тех полях с помощью метода пост скрипту /10gin.php?do=login
 
Чтобы закодировать пароль нужно знать соль если я не ошибаюсь, но жаде сам пользователь не может знать соль своего аккаунта..
также есть такая фишка как
<input type="hidden" value="guest" name="securitytoken"/>
она как раз и отвечает за передач закроса непосредственно со страницы
 
Вот что пишут:

Насколько я понимаю передачи этих параметров человеку было достаточно для авторизации, т.е. видимо я был не прав и ид сессии не используется !
Поэтому просто сгенерируй эти параметры и передай скрипту 10gin.php?do=login
Для генерации <md5hash> есть функция md5() в php.
 
Что-то вы намудрили:

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($ch, CURLOPT_URL,$url); 
  curl_setopt($ch, CURLOPT_HEADER, 1);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
  curl_setopt($ch, CURLOPT_TIMEOUT, 30);
  curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
  curl_setopt($ch, CURLOPT_POST, 1);
  curl_setopt($ch, CURLOPT_POSTFIELDS, $query_str);
  curl_setopt ( $ch , CURLOPT_USERAGENT , $agent);
  curl_setopt ( $ch , CURLOPT_HTTPHEADER , $header);
  curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
  curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
  $text = curl_exec($ch);
  curl_close($ch);		

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

  $ch = curl_init(); 
  curl_setopt($ch, CURLOPT_URL,$url);
  curl_setopt($ch, CURLOPT_HEADER, 1);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
  curl_setopt($ch, CURLOPT_TIMEOUT, 10);
  curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
  curl_setopt ( $ch , CURLOPT_USERAGENT , $agent);
  curl_setopt ( $ch , CURLOPT_HTTPHEADER , $header);
  curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
  curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
  $result = curl_exec($ch);
  curl_close($ch);

  echo $result;

?>

Вот и все
 
я тут попробовал на другом ресурсе авторизоваться и оставить сообщение. авторизация норм вышла, а когда оставлял меседж то чот не работает

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

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