Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 14835|Svare: 3

Analyser QQ Quick Login-protokoll og implementer "CSRF"

[Kopier lenke]
Publisert på 21.03.2017 15:45:47 | | | |
Som vi alle vet, brukte Tencent Activex for å implementere QQ fast login, i en ukjent nettleser, og det første som ble gjort var å installere QuickLogin-kontrollen.
Akkurat når jeg ikke vet når, trenger plutselig ikke hurtigpålogging kontrollene lenger.
På den tiden var jeg veldig forvirret, hvilken merkelig metode brukte Tencent for å samhandle med lokale applikasjoner?

Uten plugins skal nettsider ikke kunne samhandle direkte med lokale applikasjoner (med mindre en protokoll er definert, men det kan bare åpnes og ikke resultatene som vises av programmet).

Ved en tilfeldighet (vel, bare lei meg av å se på oppgavebehandleren og oppdage den native httpd-en, og finne Apache kjørende), innså jeg plutselig en mulighet: hvis QQ åpner en lokal port, lager en webserver, altså en TCP-server som følger HTTP-protokollen, og så sender nettsidens ajax en forespørsel til den QQ (på dette tidspunktet som webserver), kan du få resultatet?

Og det er egentlig resultatet.


Web JS initierer en GET-forespørsel til http://localhost.ptlogin2.qq.com (porter fra 4300-4308, én etter én til suksess).
Ping vil finne at det er 127.0.0.1, og når du sjekker porten, er det faktisk QQ i bruk.

Første forespørsel: /pt_get_uins?callback=ptui_getuins_CB&r=0.5919004196050326&pt_local_tk=399224727
pt_local_tk fra kjeks, hva det enn er; r er et tilfeldig tall

Resultatet som returneres er et JSON-array:
var var_sso_uin_list=[{"account":"Logget inn QQ-konto","face_index":-1,"gender":0,"kallenavn":"Ditt QQ-kallenavn","uin":"Fortsatt din QQ-konto","client_type":66818,"uin_flag":8388612}]; ptui_getuins_CB(var_sso_uin_list);

Bruk deretter http://ptlogin2.qq.com/getface for å få QQ-avatarer, som ikke vil bli diskutert her

På denne måten kan QQ-informasjonen din vises på nettsiden.

Når du trykker på avataren din (når du velger denne innloggingen)

Følgende forespørsler genereres:
http://localhost.ptlogin2.qq.com:4300/pt_get_st?clientuin=你的QQ号&callback=ptui_getst_CB&r=0.7293395590126179&pt_local_tk=399224727
På samme måte er r et tilfeldig tall, pt_local_tk kommer fra en kjeks, local_token
Hva gjør denne forespørselen?


Vel, Set-Cookie.

Gå deretter videre med forespørselen
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 destinasjonsadressen

Denne forespørselen vil returnere alle informasjonskapsler du trenger, og du er logget inn.

Så etter å ha lært protokollen, ble et alvorlig problem oppdaget: hva skjer hvis et (svart-hjertet) program gjør disse tingene på vegne av brukeren?

Kom i gang nå!

Jeg hadde bare en Mac tilgjengelig, så jeg skrev det i 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网页上的数据

Merk: På grunn av min tidligere erfaring med QQ-boter (basert på WebQQ-protokollen): Referer-headeren er veldig viktig (det må være et .qq.com-domenenavn), og når den er feil, vil den definitivt feile. Så det finnes ingen rundkjøringer her

Forresten, jeg var ny på Obj-C på den tiden, og noe av koden kan virke litt tullete, vær så snill å tilgi meg.
//cookiedata是个NSDictionary




På denne måten er innloggingen fullført, og du kan finne et QQ-romgrensesnitt (ikke postet her), og innlegget er vellykket.

Hva betyr dette? Dette betyr at så lenge det er et program som kjører lokalt, er det en sjanse for å fullføre QQ-pålogging i stedet for deg, og gjøre noen lure operasjoner på plattformer som QQ Space som ikke krever sekundær autentisering




Foregående:Populariser kunnskap: Forstå grundig forskjellen mellom unit px og em og rem i CSS
Neste:XDU-måler sanntids internetthastighetsovervåking [kildekode]
Publisert på 21.03.2017 16:36:43 |
Jeg skal være denne svarthjertede programmereren
 Vert| Publisert på 21.03.2017 16:44:46 |
Xiaozhe Publisert 21.03.2017 kl. 16:36
Jeg skal være denne svarthjertede programmereren

Kom igjen, kom igjen, skriv et program og la meg observere
Publisert på 27.09.2017 15:47:58 |
Opprinnelig adresse: https://www.52pojie.cn/thread-591949-1-1.html
Vennligst ikke trykk på nytt uten samtykke, og vennligst ikke oppgi kilden ved gjenutgivelse.
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com