Pokaż wyniki 1 do 7 z 7

Temat: Problem z logowaniem metodą POST

  1. #1

    Domyślnie Problem z logowaniem metodą POST

    Tak jak w temacie. Chce zalogować się do strony przykładowej strony http://kaara.pl

    Napisałem do tego prosty kod:

    Kod:
    import java.net.*;
    import java.io.*;
    import java.util.Date;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    
    /**
     *
     * @author Adam
     */
    public class Connection {
    
        public static void main(String[] args) {
            try {
                URL url = new URL("http://www.kaara.pl/updates.php");
                URLConnection con = url.openConnection();
    //            String query = "email=MOJMAIL%40o2.pl&pass=MOJEHASLO&submit.x=0&submit.y=0";
                String query = URLEncoder.encode("email", "UTF-8") + "=" + URLEncoder.encode("MOJMAIL", "UTF-8");
                query += "&" + URLEncoder.encode("pass", "UTF-8") + "=" + URLEncoder.encode("MOJEHASLO", "UTF-8");
                query += "&" + URLEncoder.encode("submit.x", "UTF-8") + "=" + URLEncoder.encode("9", "UTF-8");
                query += "&" + URLEncoder.encode("submit.y", "UTF-8") + "=" + URLEncoder.encode("9", "UTF-8");
                
                con.setAllowUserInteraction(false);
                con.setUseCaches(false);
                con.setDoInput(true);
                con.setDoOutput(true);
    //            con.setRequestProperty("POST", "/updates.php HTTP/1.1");
                con.setRequestProperty("Accept", "text/html");
                con.setRequestProperty("Keep-Alive", "300");
                con.setRequestProperty("Connection", "keep-alive");
                con.setRequestProperty("Referer", "http://kaara.pl/");
                con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
                con.setRequestProperty("Content-Length", "64");
    
    
                OutputStream writer = con.getOutputStream();
                OutputStreamWriter out = new OutputStreamWriter(new BufferedOutputStream(writer), "8859_1");
                out.write(query);
                out.write("\r\n");
                out.flush();
                out.close();
    
                int n = 0;
                while (con.getHeaderField(n) != null) {
                    System.out.println(con.getHeaderFieldKey(n) + " " + con.getHeaderField(n));
                    n++;
                }
                System.out.println("");
    
                InputStream in = con.getInputStream();
                BufferedReader r = new BufferedReader(new InputStreamReader(in));
                String line = "";
                while ((line = r.readLine()) != null) {
                    System.out.println(line);
                }
    
            } catch (MalformedURLException ex) {
                Logger.getLogger(Connection.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IOException ex) {
                Logger.getLogger(Connection.class.getName()).log(Level.SEVERE, null, ex);
            }
    
        }
    }
    Problem polega na tym, że program dostaje kod odpowiedzi 200 OK, zamiast 302 i przekierowanie na prawidłową stronę wraz z ciasteczkami, których mam używać.
    Nie rozumiem też, dlaczego firefox, jak generuje zapytanie POST, to rozbija pole input submit, na dziwne dwa pola submit.x i submit.y.
    Przecież w źródle strony widzę tylko jedno pole submit typu image.
    Może o to chodzi, że mam wpisać do x i y jakieś konkretne wartości podane przez stronkę, a nie wymyślone przez siebie?

    Pozdrawiam,
    xiom

  2. #2
    Zarejestrowany
    Mar 2008
    Skąd
    no przed monitorem przecież...
    Postów
    474

    Domyślnie

    to nie problem z kodem - nie dostajesz 200 ale nie z powodu błędu w kodzie ale z powodu konstrukcji strony. Co do submit.x i submit.y to powinieneś wstawić tam email i pass:

    <td class="center" style="background: url(templates/index/input_bg.gif)">
    <input class="login" type="text" id="email" name="email" />
    </td>
    <input class="login" type="password" id="pass" name="pass" />
    </td>
    <td class="left">
    pewnie kopiowales ten kod skads bez zrozumienia go. Sprawdz go na innej stronie, zmień nazwy pól. powinno być ok. Jak na innej stronie nie będzie chodzić to będziemy myśleć dalej.

  3. #3

    Domyślnie

    Nie, zrozumiałeś mnie.
    Kłopot polega na tym, że powinienem dostać kod 302, a dostaje 200.

    Zobacz, to jest nagłówek wysyłany przez firefoxa oraz odpowiedź na niego:

    Kod:
    http://kaara.pl/updates.php
    
    POST /updates.php HTTP/1.1
    Host: kaara.pl
    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: pl,en-us;q=0.7,en;q=0.3
    Accept-Encoding: gzip,deflate
    Accept-Charset: ISO-8859-2,utf-8;q=0.7,*;q=0.7
    Keep-Alive: 300
    Connection: keep-alive
    Referer: http://kaara.pl/
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 66
    email=MOJMAIL&pass=MOJEHASLO&submit.x=90&submit.y=17
    Odpowiedź na ten nagłówek:
    Kod:
    HTTP/1.x 302 OK
    Date: Mon, 04 Aug 2008 20:39:57 GMT
    Server: Apache/1.3.37 (Unix) mod_auth_passthrough/1.8 mod_log_bytes/1.2 mod_bwlimited/1.4 FrontPage/5.0.2.2635.SR1.2 mod_ssl/2.8.28 OpenSSL/0.9.8b
    Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
    Content-Encoding: gzip
    Expires: Thu, 19 Nov 1981 08:52:00 GMT
    Pragma: no-cache
    Vary: Accept-Encoding
    Set-Cookie: PHPSESSID=b5bb8adabbde571ebe71e66e89597bc5; path=/
    Location: updates.php
    Keep-Alive: timeout=15, max=100
    Connection: Keep-Alive
    Transfer-Encoding: chunked
    Content-Type: text/html

    Na stronie kaara.pl są 3 pola input:
    Kod:
    <input class="login" type="text" id="email" name="email" />
    <input class="login" type="password" id="pass" name="pass" />
    <input type="image" src="templates/index/login.gif" width="130" height="35" name="submit" style="border: 0;" />
    Z tym, że nie wiem dlaczego firefox za każdym razem w nagłówku wysyła jakieś liczby przypisane do pól : submit.x=90&submit.y=17

    Co do testowania logowania, to sprawdzałem na forum hack.pl (które nie wykorzystuje tej metody z kodem 302) - Działa.
    A logowanie do poczty na o2.pl (gdzie wykorzystują 302) - już nie


    Interesuje mnie kiedy strona wysyła nagłówek z kodem 302?
    Jakie musze spełnić warunki, żebym dostał taki nagłówek przy logowaniu?
    Ostatnio edytowane przez xiom : 08-04-2008 - 21:57

  4. #4
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    Dziala to tak, ze 302 bedace przekierowaniem dostajesz po poprawnym zalogowaniu sie, gdy juz dostaniesz wlasciwe ciacho i sesja jest w bazie czy jakim tam uzywaja mechanizmie autoryzacji... a redirect jest do serwera z contentem.

    Pozwala to miec grupe serwerow autoryzujacych userow i cala mase serwerow dostarczajacych content a nie robiacych autoryzacji. 302 pochodzi z aplikacji ktora obsluguje POST'a
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  5. #5

    Domyślnie

    No dobra, czyli muszę podać prawidłowe dane przy logowaniu, to wtedy mi poda prawidłowe ciasteczka, które obsługują otwartą sesję.

    W polach input z email i haslem nie ma mowy, żebym się pomylił.
    Tylko o co teraz chodzi z tymi submit.x i submit.y?
    Skąd wogóle firefox wie, że ten submit jest podzielony na 2 pola?
    I skąd wie jakie liczby tam wpisać?
    Czy to jest związane z tym, że stronka jest napisana w php ?

  6. #6
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    Tak z ciekawosci... czy przypadkiem przycisk SUBMIT nie jest obrazkiem? Gdzies mi sie cos o uszy obilo ze to wspolzedne sa ale moge sie mylic. Nie pamietam URLa niestety, czytalem o tym jakies poltora roku temu.
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  7. #7

    Domyślnie

    Faktycznie, znalazłem info, że te pola przedstawiają współrzędne piksela, na którego się kliknęło. Czyli teoretycznie obojętnie co wpisze, co oznacza, że dobrze pisałem.

    Ja już nie wiem w jakim kierunku mam drążyć :/

Podobne wątki

  1. WPA-PSK metodą słownikową
    By r_jaro in forum Wardriving
    Odpowiedzi: 5
    Autor: 02-22-2009, 11:17
  2. 31337 post ;]
    By rip in forum Off Topic
    Odpowiedzi: 2
    Autor: 07-28-2008, 11:06
  3. GG problem z logowaniem
    By northdakota in forum Windows
    Odpowiedzi: 19
    Autor: 05-28-2008, 12:03
  4. [Hackowanie] [kolejny post o keyloggerach --tqm]
    By Danielssz in forum Newbie - dla początkujących!
    Odpowiedzi: 10
    Autor: 04-27-2008, 06:34
  5. Odpowiedzi: 13
    Autor: 04-30-2007, 12:52

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj