Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 14835|Odpoveď: 3

Analyzujte QQ Quick Login Protocol a implementujte "CSRF"

[Kopírovať odkaz]
Zverejnené 21. 3. 2017 15:45:47 | | | |
Ako všetci vieme, Tencent použil Activex na implementáciu QQ rýchleho prihlásenia, keď ho používal v neznámom prehliadači, a prvou vecou, ktorú sme urobili, bolo nainštalovať ovládanie QuickLogin.
Práve keď neviem kedy, rýchle prihlásenie zrazu nepotrebuje ovládanie.
Vtedy som bol veľmi zmätený, akú zvláštnu metódu používal Tencent na interakciu s lokálnymi aplikáciami?

Bez pluginov by webové stránky nemali byť schopné priamo interagovať s lokálnymi aplikáciami (pokiaľ nie je definovaný protokol, ktorý však môže byť len vyvolaný a nie výsledky poskytované programom).

Náhodou (no, len som sa nudil pri hľadaní v správcovi úloh, objavovaní natívneho httpd a Apache, ktorý beží), som si náhle uvedomil možnosť: ak QQ otvorí lokálny port, vytvorí webový server, teda TCP server, ktorý spĺňa HTTP protokol, a potom webová stránka ajax pošle požiadavku na ten QQ (momentálne ako webový server), dá sa získať výsledok?

A to je naozaj výsledok.


Web JS iniciuje GET požiadavku na http://localhost.ptlogin2.qq.com (porty z 4300-4308, jeden po druhom k úspechu).
Ping zistí, že je to 127.0.0.1, a keď skontrolujete port, je to naozaj QQ v používaní.

Prvá požiadavka: /pt_get_uins?callback=ptui_getuins_CB&r=0.5919004196050326&pt_local_tk=399224727
pt_local_tk od sušienok, čokoľvek to je; r je náhodné číslo

Výsledkom je JSON pole:
var var_sso_uin_list=[{"account":"prihlásený v QQ účte","face_index":-1,"gender":0,"prezývka":"Vaša QQ prezývka","uin":"Stále váš QQ účet","client_type":66818,"uin_flag":8388612}]; ptui_getuins_CB(var_sso_uin_list);

Potom použite http://ptlogin2.qq.com/getface na získanie QQ avatarov, o ktorých tu nebudeme hovoriť

Týmto spôsobom sa vaše QQ informácie môžu zobraziť na webovej stránke.

Keď stlačíte svoj avatar (keď vyberiete toto prihlásenie)

Generujú sa nasledujúce požiadavky:
http://localhost.ptlogin2.qq.com:4300/pt_get_st?clientuin=你的QQ号&callback=ptui_getst_CB&r=0.7293395590126179&pt_local_tk=399224727
Podobne r je náhodné číslo, pt_local_tk pochádza zo sušienky, local_token
Čo táto žiadosť robí?


No, Set-Cookie.

Potom pokračujte v požiadavke
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
Jediná U1 tu je cieľová adresa

Táto požiadavka vráti všetky potrebné cookies a ste prihlásení.

Po naučení sa protokolu sa objavil vážny problém: čo sa stane, ak program (bezcitný) urobí tieto veci v mene používateľa?

Začnite teraz!

Mal som po ruke len Mac, tak som to napísal 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网页上的数据

Poznámka: Vzhľadom na moje predchádzajúce skúsenosti s QQ botmi (založenými na protokole WebQQ): hlavička Referer je veľmi dôležitá (musí to byť doména .qq.com), ak je nesprávna, určite zlyhá. Takže tu nie sú kruhové objazdy

Mimochodom, vtedy som bol v Obj-C nový a niektoré časti kódu môžu pôsobiť trochu smiešne, prosím, odpustite mi.
//cookiedata是个NSDictionary




Týmto spôsobom je prihlásenie dokončené, nájdete rozhranie QQ space (ktoré tu nie je zverejnené) a príspevok je úspešný.

Čo to znamená? To znamená, že pokiaľ ide o program bežiaci lokálne, existuje šanca dokončiť QQ prihlásenie namiesto vás a vykonať niektoré nenápadné operácie na platformách ako QQ space, ktoré nevyžadujú sekundárnu autentifikáciu




Predchádzajúci:Popularizujte vedomosti: Dôkladne pochopte rozdiel medzi jednotkou px a em a REM v CSS
Budúci:XDU Meter – monitorovanie rýchlosti internetu v reálnom čase [Zdrojový kód]
Zverejnené 21. 3. 2017 16:36:43 |
Budem tento programátor s čiernym srdcom
 Prenajímateľ| Zverejnené 21. 3. 2017 16:44:46 |
Xiaozhe Zverejnené 21. 3. 2017 o 16:36
Budem tento programátor s čiernym srdcom

Poď, poď, napíš softvér a nechaj ma pozorovať
Zverejnené 27. 9. 2017 15:47:58 |
Pôvodná adresa: https://www.52pojie.cn/thread-591949-1-1.html
Prosím, neprepisujte bez súhlasu a pri opätovnom vydávaní neuvádzajte zdroj.
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com