Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 14835|Odgovoriti: 3

Analizirajte QQ protokol za hitro prijavo in implementirajte "CSRF"

[Kopiraj povezavo]
Objavljeno na 21. 03. 2017 15:45:47 | | | |
Kot vsi vemo, je Tencent uporabil Activex za implementacijo QQ hitre prijave, in to v neznanem brskalniku, prva stvar pa je bila namestitev kontrole QuickLogin.
Ravno ko ne vem kdaj, hitra prijava nenadoma ne potrebuje več kontrol.
Takrat sem bil zelo zmeden, kakšno nenavadno metodo je Tencent uporabljal za interakcijo z lokalnimi aplikacijami?

Brez vtičnikov spletne strani ne bi smele neposredno komunicirati z lokalnimi aplikacijami (razen če je določen protokol, vendar ga je mogoče le poklicati, ne pa tudi rezultatov, ki jih zagotavlja program).

Po naključju (no, preprosto sem se dolgočasil, ko sem gledal upravitelja opravil in odkril izvorni httpd ter ugotovil, da teče Apache), sem nenadoma spoznal možnost: če QQ odpre lokalni port, ustvari spletni strežnik, torej TCP strežnik, ki ustreza HTTP protokolu, in nato spletna stran ajax pošlje zahtevo temu QQ (trenutno kot spletni strežnik), ali lahko dobiš rezultat?

In to je pravzaprav rezultat.


Web JS sproži GET zahtevo za http://localhost.ptlogin2.qq.com (porti od 4300 do 4308, eden za drugim do uspeha).
Pingaj bo ugotovil, da je 127.0.0.1, in ko preveriš port, je res QQ v uporabi.

Prva zahteva: /pt_get_uins?callback=ptui_getuins_CB&r=0.5919004196050326&pt_local_tk=399224727
pt_local_tk od piškotov, karkoli že je; r je naključno število

Rezultat, ki ga vrnemo, je JSON polje:
var var_sso_uin_list=[{"account":"Prijavljen v QQ račun","face_index":-1,"spol":0,"vzdevek":"Tvoj QQ vzdevek","uin":"Še vedno tvoj QQ račun","client_type":66818,"uin_flag":8388612}]; ptui_getuins_CB(var_sso_uin_list);

Nato uporabite http://ptlogin2.qq.com/getface za pridobitev QQ avatarjev, o katerih tukaj ne bomo govorili

Na ta način se lahko vaše QQ informacije prikažejo na spletni strani.

Ko pritisnete svoj avatar (ko izberete to prijavo)

Generirane so naslednje zahteve:
http://localhost.ptlogin2.qq.com:4300/pt_get_st?clientuin=你的QQ号&callback=ptui_getst_CB&r=0.7293395590126179&pt_local_tk=399224727
Podobno je r naključno število, pt_local_tk je iz piškotka, local_token
Kaj ta prošnja naredi?


No, Set-Cookie.

Nato nadaljuj z zahtevo
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
Edini U1 tukaj je naslov cilja

Ta zahteva vam bo vrnila vse potrebne piškotke in prijavljeni ste.

Po učenju protokola je bil odkrit resen problem: kaj se zgodi, če program (brezsrčni) naredi te stvari v imenu uporabnika?

Začnite zdaj!

Imel sem pri roki samo Mac, zato sem ga napisal v 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网页上的数据

Opomba: Zaradi mojih prejšnjih izkušenj s QQ boti (na osnovi protokola WebQQ): glava Referer je zelo pomembna (mora biti domena .qq.com), ko je napačna, bo zagotovo odpovedala. Torej tukaj ni krožišč

Mimogrede, takrat sem bil nov v Obj-C in morda se mi zdi nekaj kode nekoliko smešno, prosim, oprostite mi.
//cookiedata是个NSDictionary




Na ta način je prijava opravljena, najdete QQ space vmesnik (tukaj ni objavljen), in objava je uspešna.

Kaj to pomeni? To pomeni, da dokler program teče lokalno, obstaja možnost, da se QQ prijavi namesto vas in izvede nekaj prikritih operacij na platformah, kot je QQ space, ki ne zahtevajo sekundarne avtentikacije




Prejšnji:Popularizacija znanja: Temeljito razumeti razliko med enotami px in em ter REM v CSS
Naslednji:XDU merilnik – spremljanje hitrosti interneta v realnem času [izvorna koda]
Objavljeno na 21. 03. 2017 16:36:43 |
Jaz bom ta črnosrčni programer
 Najemodajalec| Objavljeno na 21. 03. 2017 16:44:46 |
Xiaozhe Objavljeno 21. 3. 2017 ob 16:36
Jaz bom ta črnosrčni programer

No, no, napiši programsko opremo in naj opazujem
Objavljeno na 27. 09. 2017 15:47:58 |
Prvotni naslov: https://www.52pojie.cn/thread-591949-1-1.html
Prosimo, ne objavljajte brez soglasja in ne navajajte vira pri ponatisu.
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com