Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 14835|Atsakyti: 3

Išanalizuokite QQ greito prisijungimo protokolą ir įdiekite "CSRF"

[Kopijuoti nuorodą]
Paskelbta 2017-03-21 15:45:47 | | | |
Kaip visi žinome, "Tencent" naudojo "Activex", kad įdiegtų QQ greitą prisijungimą, naudodama jį nepažįstamoje naršyklėje, ir pirmas dalykas, kurį reikėjo padaryti, buvo įdiegti "QuickLogin" valdiklį.
Tik tada, kai nežinau, kada, greitam prisijungimui staiga nereikia valdiklių.
Tuo metu buvau labai suglumęs, kokį keistą metodą "Tencent" naudojo sąveikaudamas su vietinėmis programomis?

Be papildinių tinklalapiai neturėtų galėti tiesiogiai sąveikauti su vietinėmis programomis (nebent yra apibrėžtas protokolas, bet jį galima iškviesti, o ne programos pateiktus rezultatus).

Atsitiktinai (gerai, tiesiog nuobodu žiūrėti į užduočių tvarkyklę ir atrasti vietinį httpd ir rasti "Apache" veikia), staiga supratau galimybę: jei QQ atidaro vietinį prievadą, sukuria žiniatinklio serverį, tai yra TCP serverį, atitinkantį HTTP protokolą, o tada tinklalapis ajax pateikia užklausą tam QQ (šiuo metu kaip žiniatinklio serveriui), ar galite gauti rezultatą?

Ir tai iš tikrųjų yra rezultatas.


Web JS inicijuoja GET užklausą http://localhost.ptlogin2.qq.com (uostai nuo 4300 iki 4308, vienas po kito iki sėkmės).
Ping jis pamatys, kad jis yra 127.0.0.1, o kai patikrinsite prievadą, jis iš tikrųjų yra QQ naudojamas.

Pirmoji užklausa: /pt_get_uins?callback=ptui_getuins_CB&r=0.5919004196050326&pt_local_tk=399224727
pt_local_tk nuo sausainių, kad ir kas tai būtų; r yra atsitiktinis skaičius

Grąžintas rezultatas yra JSON masyvas:
var var_sso_uin_list=[{"account":"Prisijungė prie QQ paskyros","face_index":-1,"gender":0,"nickname":"Jūsų QQ slapyvardis","uin":"Vis dar jūsų QQ paskyra","client_type":66818,"uin_flag":8388612}]; ptui_getuins_CB (var_sso_uin_list);

Tada naudokite http://ptlogin2.qq.com/getface, kad gautumėte QQ avatarus, kurie čia nebus aptarti

Tokiu būdu jūsų QQ informacija gali būti rodoma tinklalapyje.

Kai paspaudžiate savo avatarą (kai pasirenkate šį prisijungimą)

Sugeneruojamos šios užklausos:
http://localhost.ptlogin2.qq.com:4300/pt_get_st?clientuin=你的QQ号&callback=ptui_getst_CB&r=0.7293395590126179&pt_local_tk=399224727
Panašiai r yra atsitiktinis skaičius, pt_local_tk yra iš slapuko, local_token
Ką reiškia šis prašymas?


Na, nustatykite slapuką.

Tada tęskite užklausą
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
Vienintelis U1 čia yra paskirties adresas

Ši užklausa grąžins visus jums reikalingus slapukus ir esate prisijungę.

Taigi, išmokus protokolą, buvo atrasta rimta problema: kas atsitiks, jei (juodaširdė) programa atliks šiuos dalykus vartotojo vardu?

Pradėkite dabar!

Turėjau tik "Mac" po ranka, todėl parašiau jį Obj-C.

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

Pastaba: Dėl mano ankstesnės patirties QQ robotuose (remiantis WebQQ protokolu): Referer antraštė yra labai svarbi (tai turi būti .qq.com domeno vardas), kai ji bus neteisinga, ji tikrai nepavyks. Taigi čia nėra žiedinių sankryžų

Beje, tuo metu buvau naujokas Obj-C, o kai kurie kodai gali atrodyti šiek tiek kvaili, atleiskite.
//cookiedata是个NSDictionary




Tokiu būdu prisijungimas baigtas, galite rasti QQ erdvės sąsają (čia nepaskelbta), o įrašas sėkmingas.

Ką tai reiškia? Tai reiškia, kad tol, kol tai yra vietoje veikianti programa, yra galimybė užbaigti QQ prisijungimą vietoj jūsų ir atlikti keletą klastingų operacijų tokiose platformose kaip QQ erdvė, kurioms nereikia antrinio autentifikavimo




Ankstesnis:Populiarinti žinias: Gerai suprasti skirtumą tarp vieneto px ir em ir rem CSS
Kitą:XDU skaitiklio interneto greičio stebėjimas realiuoju laiku [šaltinio kodas]
Paskelbta 2017-03-21 16:36:43 |
Aš būsiu juodaširdis programuotojas
 Savininkas| Paskelbta 2017-03-21 16:44:46 |
Xiaozhe Publikuota: 2017-3-21 16:36
Aš būsiu juodaširdis programuotojas

Nagi, ateik, parašyk programinę įrangą ir leisk man stebėti
Paskelbta 2017-09-27 15:47:58 |
Pradinis adresas: https://www.52pojie.cn/thread-591949-1-1.html
Prašome neperspausdinti be sutikimo, o perspausdindami nenurodykite šaltinio.
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com