Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 14835|Svar: 3

Analyser QQ Quick Login Protocol og implementer "CSRF"

[Kopier link]
Opslået på 21/03/2017 15.45.47 | | | |
Som vi alle ved, brugte Tencent Activex til at implementere QQ fast login, ved at bruge det i en ukendt browser, og det første var at installere QuickLogin-kontrollen.
Lige når jeg ikke ved hvornår, behøver hurtiglogin pludselig ikke kontrollerne.
På det tidspunkt var jeg meget forvirret – hvilken mærkelig metode brugte Tencent til at interagere med lokale applikationer?

Uden plugins bør websider ikke kunne interagere direkte med lokale applikationer (medmindre en protokol er defineret, men kun kan kaldes frem og ikke de resultater, som programmet leverer).

Ved et tilfælde (eller bare keder mig over at kigge i joblisten og opdage den native httpd og finde Apache kørende), indså jeg pludselig en mulighed: hvis QQ åbner en lokal port, laver en webserver, altså en TCP-server, der følger HTTP-protokollen, og så laver websidens ajax en anmodning til den QQ (på nuværende tidspunkt som webserver), kan du så få resultatet?

Og det er virkelig resultatet.


Web JS initierer en GET-anmodning til http://localhost.ptlogin2.qq.com (porte fra 4300-4308, én efter én til succes).
Ping den vil finde ud af, at det er 127.0.0.1, og når du tjekker porten, er den faktisk QQ i brug.

Første anmodning: /pt_get_uins?callback=ptui_getuins_CB&r=0.5919004196050326&pt_local_tk=399224727
pt_local_tk fra småkager, hvad det end er; r er et tilfældigt tal

Resultatet, der returneres, er et JSON-array:
var var_sso_uin_list=[{"account":"Logget ind QQ account","face_index":-1,"gender":0,"nickname":"Your QQ callname","uin":"Still your QQ account","client_type":66818,"uin_flag":8388612}]; ptui_getuins_CB(var_sso_uin_list);

Brug derefter http://ptlogin2.qq.com/getface til at få QQ-avatarer, som ikke vil blive diskuteret her

På denne måde kan dine QQ-oplysninger vises på hjemmesiden.

Når du trykker på din avatar (når du vælger denne login)

Følgende anmodninger genereres:
http://localhost.ptlogin2.qq.com:4300/pt_get_st?clientuin=你的QQ号&callback=ptui_getst_CB&r=0.7293395590126179&pt_local_tk=399224727
Tilsvarende er r et tilfældigt tal, pt_local_tk kommer fra en cookie, local_token
Hvad gør denne anmodning?


Nå, Set-Cookie.

Så fortsæt med anmodningen
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
Den eneste U1 her er destinationsadressen

Denne anmodning returnerer alle de cookies, du har brug for, og du er logget ind.

Så efter at have lært protokollen blev der opdaget et alvorligt problem: hvad sker der, hvis et (sort-hjertet) program gør disse ting på brugerens vegne?

Kom i gang nu!

Jeg havde kun en Mac ved hånden, så jeg skrev det i Obj-C.

[selv 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网页上的数据

Bemærk: På grund af min tidligere erfaring med QQ-bots (baseret på WebQQ-protokollen): Referer-headeren er meget vigtig (det skal være et .qq.com-domænenavn), og hvis den er forkert, vil den helt sikkert fejle. Så der er ingen rundkørsler her

For resten, jeg var ny i Obj-C på det tidspunkt, og noget af koden kan virke lidt fjollet, så tilgiv mig.
//cookiedata是个NSDictionary




På denne måde er login fuldført, og du kan finde en QQ-pladsgrænseflade (ikke postet her), og indlægget er succesfuldt.

Hvad betyder det? Det betyder, at så længe det er et program, der kører lokalt, er der en chance for at gennemføre QQ-login i stedet for dig og udføre nogle snedige operationer på platforme som QQ Space, der ikke kræver sekundær autentificering




Tidligere:Populariser viden: Forstå grundigt forskellen mellem unit px og em og rem i CSS
Næste:XDU-måler realtids internethastighedsovervågning [kildekode]
Opslået på 21/03/2017 16.36.43 |
Jeg vil være denne sort-hjertede programmør
 Udlejer| Opslået på 21/03/2017 16.44.46 |
Xiaozhe Opslået den 21-3-2017 kl. 16:36
Jeg vil være denne sort-hjertede programmør

Kom nu, kom nu, skriv et program og lad mig observere
Opslået på 27/09/2017 15.47.58 |
Original adresse: https://www.52pojie.cn/thread-591949-1-1.html
Venligst genoptryk ikke uden samtykke, og angiv venligst ikke kilden ved genoptryk.
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com