Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Logowanie na forum i szukanie (CURL)
lanceq
post 13.07.2012, 21:02:12
Post #1





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 3.07.2012

Ostrzeżenie: (0%)
-----


Witam serdczenie,

mam taki skrypt który loguje się na forum a następnie szuka czegoś w szukajce ale niestety nie działa on prawidłowo, jedyne co robi to wchodzi na podstronę http://otland.net/login.php?do=login i nie loguje się ani nic, nie wiem co jest powodem. Co robię źle ?

O to kodzik

  1. <?php
  2.  
  3. $ch = curl_init();
  4. curl_setopt($ch, CURLOPT_URL, 'http://otland.net/login.php?do=login');
  5. curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0.2) Gecko/20100101 Firefox/10.0.2');
  6. curl_setopt($ch, CURLOPT_POST, 1);
  7. curl_setopt($ch, CURLOPT_POSTFIELDS, 'username=loginek&password=haselko&login=submit');
  8. curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookies.txt');
  9. curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookies.txt');
  10. curl_setopt($ch, CURLOPT_REFERER, 'http://otland.net/login.php?do=login');
  11. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  12. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  13. curl_exec($ch);
  14. curl_close($ch);
  15.  
  16. $ch = curl_init();
  17. curl_setopt($ch, CURLOPT_URL, 'http://otland.net/search.php?do=process');
  18. curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0.2) Gecko/20100101 Firefox/10.0.2');
  19. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  20. curl_setopt($ch, CURLOPT_POST, 1);
  21. curl_setopt($ch, CURLOPT_POSTFIELDS, 'keyword=jakis tam keyword');
  22. curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookies.txt');
  23. curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookies.txt');
  24. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  25. echo curl_exec($ch);
  26. curl_close($ch);
  27.  
  28. ?>
Go to the top of the page
+Quote Post
franki01
post 13.07.2012, 21:09:02
Post #2





Grupa: Zarejestrowani
Postów: 508
Pomógł: 75
Dołączył: 2.11.2005
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


  1. curl_setopt($ch, CURLOPT_POSTFIELDS, 'username=loginek&password=haselko&login=submit');


Przekazujesz zdecydowanie za mało parametrów. Zainstaluj sobie jakiś dodatek do przeglądarki, wychwytujący wysyłane nagłówki i zobacz, jak wiele pól jest przesyłanych. No i upewnij się, że istnieje plik cookies.txt.
Go to the top of the page
+Quote Post
lanceq
post 13.07.2012, 21:13:55
Post #3





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 3.07.2012

Ostrzeżenie: (0%)
-----


Nie mam pliku cookies, jak takowy powinien wyglądać? Po 2 jaki program do obsługi nagłówków polecasz na chrome ? Pobrałem "HTTP Headers" i kompletnie nie rozkminiam jego działania.
Go to the top of the page
+Quote Post
franki01
post 13.07.2012, 21:27:10
Post #4





Grupa: Zarejestrowani
Postów: 508
Pomógł: 75
Dołączył: 2.11.2005
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Stwórz pusty plik cookies.txt w katalogu ze skryptem. Do chrome'a nie potrafię znaleźć odpowiedniego dodatku. Wszystkie pokazują tylko nagłówki właśnie otwartej strony (w przypadku nagłówka Location jest problem). Na firefoxie korzystam z live http headers jeżeli byłbyś zainteresowany.

Ten post edytował franki01 13.07.2012, 21:27:32
Go to the top of the page
+Quote Post
lanceq
post 14.07.2012, 17:10:21
Post #5





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 3.07.2012

Ostrzeżenie: (0%)
-----


Cookies się robi automatycznie, pobrałem te live headers na firefoxa i o to nagłówek który jest przesyłany przy klinięciu login:


POST /login.php?do=login vb_login_username=tescik123&vb_login_password=&vb_login_password_hint=Password&s=&securitytoken=1342212874-9ef99121382b299b7bb88224266d61e53a1a953f&do=login&vb_login_md5password=8dcdd9ffe2ac5ac5051324ad0ad9dafb&vb_login_md5password_utf=8dcdd9ffe2ac5ac5051324ad0ad9dafb

hashuje na md5 i do tego ten token, kompletnie nie wiem jak to zrobic zeby działało.

Refresh.


Mógłby ktoś pomóc?

Ten post edytował lanceq 13.07.2012, 21:58:18
Go to the top of the page
+Quote Post
franki01
post 15.07.2012, 00:44:29
Post #6





Grupa: Zarejestrowani
Postów: 508
Pomógł: 75
Dołączył: 2.11.2005
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Interesuje Cię ten fragment:
Kod
vb_login_username=tescik123&vb_login_password=&vb_login_password_hint=Password&s=&securitytoken=1342212874-9ef99121382b299b7bb88224266d61e53a1a953f&do=login&vb_login_md5password=8dcdd9ffe2ac5ac5051324ad0ad9dafb&vb_login_md5password_utf=8dcdd9ffe2ac5ac5051324ad0ad9dafb


Jak widzisz, masz tam podanego użytkownika, jakieś dwa zakodowane hasła oraz security token. Spróbuj usunąć wszystkie ciasteczka tylko z domeny tamtego forum. Następnie wejdź i zaloguj się jeszcze raz. Jeżeli przesyłane (jak wyżej) hasła są takie same, masz problem z głowy. Natomiast jeżeli się różnią, musisz znaleźć w JS sposób szyfrowania tego hasła przed wysłaniem formularza (a tutaj niestety sprawa jest trudniejsza i za darmo raczej nikt nie pomoże smile.gif). Załóżmy, że hasła będą takie same. Przed logowaniem, musisz odwiedzić stronę http://otland.net/login.php?do=login CURLem jeszcze raz i pobrać wartość pola securitytoken. Potem wszystko sklejasz w jeden string wg schematu, który przechwyciłeś i voila, masz wysyłane dane POST.
Go to the top of the page
+Quote Post
lanceq
post 15.07.2012, 10:00:58
Post #7





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 3.07.2012

Ostrzeżenie: (0%)
-----


Zalogowałem się ponownie z wyczyszczonymi cookies i wygląda to tak:

Kod
POST /login.php?do=login vb_login_username=tescik123&vb_login_password=&vb_login_password_hint=Password&s=&securitytoken=1342342992-786cd6b3f78a3c6ed0a39a129bb08dcb5f15f894&do=login&vb_login_md5password=8dcdd9ffe2ac5ac5051324ad0ad9dafb&vb_login_md5password_utf=8dcdd9ffe2ac5ac5051324ad0ad9dafb


Jak widać token jest zmienny, co z tym zrobić ?

Ten post edytował lanceq 15.07.2012, 10:05:08
Go to the top of the page
+Quote Post
yozer2308
post 15.07.2012, 14:21:56
Post #8





Grupa: Zarejestrowani
Postów: 10
Pomógł: 1
Dołączył: 12.12.2011

Ostrzeżenie: (0%)
-----


Pobierz wczesniej stronę, wyciągnij tokena, i wtedy wyślij tokena razem z innymi danymi POST.
Go to the top of the page
+Quote Post
franki01
post 15.07.2012, 19:00:50
Post #9





Grupa: Zarejestrowani
Postów: 508
Pomógł: 75
Dołączył: 2.11.2005
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Właśnie przyjrzałem się logowaniu i wcale nie trzeba wyłapywać tego tokenu. Przy logowaniu ze strony głównej, ten token zawsze to "guest".
Wtedy zamiast Twojego:
  1. curl_setopt($ch, CURLOPT_POSTFIELDS, 'username=loginek&password=haselko&login=submit');
wstaw:
  1. curl_setopt($ch, CURLOPT_POSTFIELDS, 'vb_login_username=tescik123&vb_login_password=&vb_login_password_hint=Password&s=&securitytoken=guest&do=login&vb_login_md5password=8dcdd9ffe2ac5ac5051324ad0ad9dafb&vb_login_md5password_utf=8dcdd9ffe2ac5ac5051324ad0ad9dafb');


Daj znać czy się udało zalogować.
Go to the top of the page
+Quote Post
lanceq
post 18.07.2012, 09:40:10
Post #10





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 3.07.2012

Ostrzeżenie: (0%)
-----


Jednak po wykonaniu tego wyskoczyła mi wiadomość:

Kod
Your submission could not be processed because a security token was missing.

If this occurred unexpectedly, please inform the administrator and describe the action you performed before you received this error.
OtLand


Możecie mi powiedzieć jak ten token uprzednio wyciągnąć i jak to złożyć w kupę ?

Odświeżam, jest w stanie ktoś mi pomóc tutaj ?
Go to the top of the page
+Quote Post
strife
post 18.07.2012, 09:57:08
Post #11





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

Ostrzeżenie: (0%)
-----


Ktoś już wyżej to napisał ... Prześledź nagłowki jakie wysyłasz przez przeglądarkę, a potem na podstawie tego wyślij analogiczne.

Ja jak kiedyś pisałem tego typu skrypt to skorzystałem z klasy php do odczytywania DOM (simple html dom), w celu wyciągnięcia wszystkich elementów w zakresie <form> i wysłania ich modyfikując tylko te dotyczące loginu i hasła, wtedy wysyłał się cały pełny formularz, wtedy również ochrona przed CSRF (czyli ten token) jest omijana.

Pzdr.


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 20.07.2025 - 02:34