авторизация и заливка в JOOMLA

Discussion in 'PHP' started by genom--, 23 Oct 2012.

  1. genom--

    genom-- Elder - Старейшина

    Joined:
    9 Jul 2006
    Messages:
    668
    Likes Received:
    416
    Reputations:
    288
    всем привет - в общем решил накропать скрипт на perl-e
    для авторизации в админке джумлы - и последующей заливки файла - через медиа - в папку с картинками

    начал - эмулировать форму ввода логина пароля + скрытых полей

    PHP:
    $rp=$ua->post('http://blabla.com/administrator/index.php',   {'username' => 'admin','passwd' => 'admin','option' => 'com_login','task' => "login",'return' => 'aW5kZXgucGhwP29wdGlvbj1jb21fbWVkaWE=','12922051217236dde67b38782557b8b8' => '1'});
    по итогу получаю от сервера не ожидаемый вход в админку - а ответ следующим пакетом

    PHP:
    HTTP/1.1 303 See other  Connectionclose  DateTue23 Oct 2012 12:10:13 GMT  Locationhttp://blabla.com/administrator/index.php  Server: Apache  Vary: Accept-Encoding  Content-Length: 0  Content-Type: text/html; charset=utf-8  Client-Date: Tue, 23 Oct 2012 12:10:48 GMT  Client-Peer: 173.254.28.49:80  Client-Response-Num: 1  Set-Cookie: d3e6b4f475e79fad38f04d181eeb3000=3gp7rvlfland7opibq1fvt1iu1; path=/
    сначала думал что у меня кукисы плохо держатся - поэтому не редиректися -- потом почитал на википедии про ошибку 303

    303 See Other — документ по запрошенному URI нужно запросить по адресу в поле Location заголовка с использованием метода GET несмотря даже на то, что первый запрашивался иным методом. Этот код был введён вместе с 307-ым для избежания неоднозначности, чтобы сервер был уверен, что следующий ресурс будет запрошен методом GET. Например, на веб-странице есть поле ввода текста для быстрого перехода и поиска. После ввода данных браузер делает запрос методом POST, включая в тело сообщения введённый текст. Если обнаружен документ с введённым названием, то сервер отвечает кодом 303, указав в заголовке Location его постоянный адрес. Тогда браузер гарантировано его запросит методом GET для получения содержимого. В противном случае сервер просто вернёт клиенту страницу с результатами поиска. Введено в HTTP/1.1.

    и затуп - хз как в нее пройти - дальнейший логичный get запрос на индекс админки ничего не дает кроме формы ввода

    вообщем - если есть у кого какие мысли излагайте
    или мб есть какие готовые скрипты для перебора админок или работы с ними с авторизацией - скиньте - посмотрелбы - мб я туплю где

    ps - реалиация нужна на perl-e накрайняк на чистом php
    статью с юзаньем curl - типо этой читал - она не пашет на посл версиях
     
  2. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Т.е. если после подобного кода вставить обращение к какой-то внутренней странице, то будет просить авторизоваться?
    PHP:
    my $url 'http://blabla.com/administrator/index.php';

    my $ua LWP::UserAgent->new(cookie_jar => new HTTP::Cookies);
    my $data $ua->get($url)->content;

    my ($token) = ($data =~ /hidden" name="([a-f0-9]{32})"/);

    $data = $ua->post($url, {username => 'admin', passwd => 'admin', lang => 'en-GB', option => 'com_login', task => 'login', return => '', $token => 1});
     
    _________________________
    1 person likes this.
  3. genom--

    genom-- Elder - Старейшина

    Joined:
    9 Jul 2006
    Messages:
    668
    Likes Received:
    416
    Reputations:
    288
    у меня просило авторизацию заново --- попробовал на админке твой код- прокатило -- удивился - начал думать почему - сам также авторизовывался впринципе ток не выдирал содержимое твоей переменной $token - а вручную вписывал его в тестовом скрипте - он всегда статичный
    оказалось чтоб все норм прокатывало - надо обязательно
    проэмулировать все 3 этапа:
    сначала зайти на страницу залогина
    потом ввести лог и пас
    потом авторизоваться

    пиндец - а я из-за того что первый этам пропускал и сразу сходу постом бомбил завпрос на авторизацию - ниче не выходило
    нав часть кукиса формируется сначала при заходе на форму авторизации и ее потом нехватало для захода

    пасибы большое - завтра сяду дописывать )))))
     
    #3 genom--, 23 Oct 2012
    Last edited: 23 Oct 2012