Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 14835|Odpowiedź: 3

Przeanalizuj protokół szybkiego logowania QQ i zaimplementuj "CSRF"

[Skopiuj link]
Opublikowano 21.03.2017 15:45:47 | | | |
Jak wszyscy wiemy, Tencent użył Activex do implementacji szybkiego logowania QQ, używając go w nieznanej przeglądarce, a pierwszą rzeczą do zrobienia była instalacja panelu QuickLogin.
Właśnie gdy nie wiem kiedy, szybkie logowanie nagle przestaje mieć dostęp do sterowania.
Wtedy byłem bardzo zdezorientowany, jaką dziwną metodę używa Tencent do interakcji z lokalnymi aplikacjami?

Bez wtyczek strony internetowe nie powinny mieć możliwości bezpośredniej interakcji z lokalnymi aplikacjami (chyba że zdefiniowany jest protokół, ale może być wywołany tylko i nie wynikami dostarczanymi przez program).

Przypadkiem (no, po prostu znudził mnie przegląd menedżera zadań, odkrycie natywnego httpd i uruchomienie Apache), nagle uświadomiłem sobie możliwość: jeśli QQ otworzy port lokalny, utworzy serwer WWW, czyli serwer TCP zgodny z protokołem HTTP, a strona ajax wyśle żądanie do tego QQ (obecnie jako serwera WWW), czy można uzyskać wynik?

I to jest naprawdę efekt.


Web JS inicjuje żądanie GET do http://localhost.ptlogin2.qq.com (porty z 4300-4308, jeden po drugim do sukcesu).
Pinguj, pokażesz, że jest to wersja 127.0.0.1, a po sprawdzeniu portu faktycznie jest to QQ w użyciu.

Pierwsze żądanie: /pt_get_uins?callback=ptui_getuins_CB&r=0.5919004196050326&pt_local_tk=399224727
pt_local_tk od ciasteczek, cokolwiek to jest; r jest liczbą losową

Wynik zwracany to tablica JSON:
var var_sso_uin_list=[{"account":"zalogowany na konto QQ","face_index":-1,"gender":0,"nickname":""Twój pseudonim QQ","uin":"Wciąż twoje konto QQ","client_type":66818,"uin_flag":8388612}]; ptui_getuins_CB(var_sso_uin_list);

Następnie użyj http://ptlogin2.qq.com/getface, aby uzyskać awatary QQ, o których tu nie będę mówić

Dzięki temu Twoje informacje QQ mogą być wyświetlane na stronie internetowej.

Kiedy naciśniesz awatar (gdy wybierasz to logowanie)

Generowane są następujące żądania:
http://localhost.ptlogin2.qq.com:4300/pt_get_st?clientuin=你的QQ号&callback=ptui_getst_CB&r=0.7293395590126179&pt_local_tk=399224727
Podobnie r jest liczbą losową, pt_local_tk pochodzi z ciasteczka, local_token
Co robi ta prośba?


No cóż, Set-Cookie.

Następnie przejdź do wykonania prośby
http://ptlogin2.qq.com/jump?clientuin=你的QQ号&keyindex=19&pt_aid=549000912&daid=5&u1=http%3A%2F%2Fqzs.qzone.qq.com%2Fqzone%2Fv5%2Floginsucc.html%3Fpara%3Dizone&pt_local_tk=1881902769&pt_3rd_aid=0&ptopt=1&style=40
Jedynym U1 tutaj jest adres docelowy

To żądanie zwróci wszystkie potrzebne pliki cookie i zostaniesz zalogowany.

Po nauczeniu się protokołu odkryto poważny problem: co się stanie, jeśli (niezdarny) program zrobi to w imieniu użytkownika?

Zacznij już teraz!

Miałem pod ręką tylko Maca, więc napisałem to w Obj-C.

[self GET:@"http://localhost.ptlogin2.qq.com:4300/pt_get_uins?callback=ptui_getuins_CB&r=0.47178753013324637&pt_local_tk=-1211438011" header:nil];
//这里的GET是我自己封装的一个方法,GET网页上的数据

Uwaga: Ze względu na moje wcześniejsze doświadczenie z botami QQ (opartymi na protokole WebQQ): nagłówek Referer jest bardzo ważny (musi to być domena .qq.com), jeśli się pomyli, na pewno się nie uda. Więc tutaj nie ma ronda

A tak przy okazji, byłem wtedy nowy w Obj-C i niektóre części kodu mogą wydawać się trochę głupie, proszę wybaczcie.
//cookiedata是个NSDictionary




W ten sposób logowanie zostaje zakończone, znajdziesz interfejs QQ space (nie jest tu opublikowany), a post jest pomyślny.

Co to oznacza? Oznacza to, że dopóki program działa lokalnie, istnieje szansa na wykonanie logowania do QQ zamiast Ciebie i wykonanie podstępnych operacji na platformach takich jak QQ Space, które nie wymagają uwierzytelniania dodatkowego




Poprzedni:Popularyzacja wiedzy: Dogłębne zrozumienie różnic między jednostką px a em a REM w CSS
Następny:XDU Meter – monitorowanie prędkości internetu w czasie rzeczywistym [Kod źródłowy]
Opublikowano 21.03.2017 16:36:43 |
Będę tym czarnym sercem programistą
 Ziemianin| Opublikowano 21.03.2017 16:44:46 |
Xiaozhe Opublikowano 2017-3-21 16:36
Będę tym czarnym sercem programistą

No dalej, no dalej, napisz oprogramowanie i pozwól mi obserwować
Opublikowano 27.09.2017 15:47:58 |
Oryginalny adres: https://www.52pojie.cn/thread-591949-1-1.html
Prosimy nie przedrukować bez zgody i nie podawać źródła podczas ponownego drukowania.
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com