Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 14835|Vastaus: 3

Analysoi QQ Quick Login -protokolla ja toteuta "CSRF"

[Kopioi linkki]
Julkaistu 21.3.2017 15.45.47 | | | |
Kuten kaikki tiedämme, Tencent käytti Activex:ää QQ-nopean kirjautumisen toteuttamiseen, käyttäen sitä tuntemattomalla selaimella, ja ensimmäinen askel oli asentaa QuickLogin-ohjaus.
Juuri kun en tiedä milloin, nopea kirjautuminen ei yhtäkkiä tarvitse ohjaimia.
Tuolloin olin hyvin hämmentynyt, mitä outoa menetelmää Tencent käytti paikallisten sovellusten käsittelyyn?

Ilman lisäosia verkkosivujen ei pitäisi pystyä suoraan vuorovaikuttamaan paikallisten sovellusten kanssa (ellei protokolla ole määritelty, mutta se voidaan kutsua vain esiin eikä ohjelman antamia tuloksia).

Sattumalta (no, kyllästyin katsomaan tehtävienhallintaa ja löytämään natiivi httpd:n ja löytämään Apache käynnissä) tajusin yhtäkkiä mahdollisuuden: jos QQ avaa paikallisen portin, tekee web-palvelimen, eli TCP-palvelimen, joka noudattaa HTTP-protokollaa, ja sitten verkkosivu ajax tekee pyynnön kyseiselle QQ:lle (tällä hetkellä web-palvelimena), voiko tuloksen saada?

Ja se on oikeastaan lopputulos.


Web JS käynnistää GET-pyynnön http://localhost.ptlogin2.qq.com:lle (portit 4300–4308, yksi kerrallaan onnistumiseen).
Pingauksella se huomaa, että se on 127.0.0.1, ja kun tarkistat portin, se on todellakin käytössä oleva QQ.

Ensimmäinen pyyntö: /pt_get_uins?callback=ptui_getuins_CB&r=0.5919004196050326&pt_local_tk=399224727
pt_local_tk kekseistä, mitä ikinä se onkaan; r on satunnaisluku

Palautettu tulos on JSON-taulukko:
var var_sso_uin_list=[{"account":"Kirjautunut QQ-tilille","face_index":-1,"gender":0,"nickname":"Your QQ chkname","uin":"Still your QQ -tili","client_type":66818,"uin_flag":8388612}]; ptui_getuins_CB(var_sso_uin_list);

Käytä sitten http://ptlogin2.qq.com/getface saadaksesi QQ-avatareja, joita ei tässä käsitellä

Näin QQ-tietosi voidaan näyttää verkkosivulla.

Kun painat avatariasi (kun valitset tämän kirjautumisen)

Seuraavat pyynnöt generoidaan:
http://localhost.ptlogin2.qq.com:4300/pt_get_st?clientuin=你的QQ号&callback=ptui_getst_CB&r=0.7293395590126179&pt_local_tk=399224727
Samoin r on satunnaisluku, pt_local_tk tulee evästeestä, local_token
Mitä tämä pyyntö tekee?


No, Set-Cookie.

Sitten jatka pyyntöä
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
Ainoa U1 täällä on kohdeosoite

Tämä pyyntö palauttaa kaikki tarvitsemasi evästeet, ja olet kirjautunut sisään.

Kun protokolla opittiin, havaittiin vakava ongelma: mitä tapahtuu, jos (mustasydäminen) ohjelma tekee nämä asiat käyttäjän puolesta?

Aloita nyt!

Minulla oli vain Mac käsillä, joten kirjoitin sen Obj-C:llä.

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

Huomautus: Aiemman kokemukseni perusteella QQ-bottien parissa (perustuen WebQQ-protokollaan): Referer-otsikko on erittäin tärkeä (sen täytyy olla .qq.com-verkkotunnus), kun se on väärässä, se varmasti epäonnistuu. Joten täällä ei ole liikenneympyröitä

Muuten, olin tuolloin uusi Obj-C:ssä, ja osa koodista saattaa tuntua vähän hassulta, pyydän anteeksi.
//cookiedata是个NSDictionary




Näin kirjautuminen on valmis, ja löydät QQ-tilan käyttöliittymän (ei täällä julkaistu), ja julkaisu onnistuu.

Mitä tämä tarkoittaa? Tämä tarkoittaa, että kunhan ohjelma toimii paikallisesti, on mahdollisuus suorittaa QQ-kirjautuminen sinun sijastasi ja tehdä ovelia operaatioita alustoilla, kuten QQ space, jotka eivät vaadi toissijaista todennustodistusta




Edellinen:Tee tieto tunnetuksi: Ymmärrä perusteellisesti ero unit px:n ja EM:n sekä rem:n välillä CSS:ssä
Seuraava:XDU-mittarin reaaliaikainen internet-nopeuden seuranta [lähdekoodi]
Julkaistu 21.3.2017 16.36.43 |
Olen tämä mustasydäminen ohjelmoija
 Vuokraisäntä| Julkaistu 21.3.2017 16.44.46 |
Xiaozhe Julkaistu 2017-3-21 klo 16:36
Olen tämä mustasydäminen ohjelmoija

No niin, no niin, kirjoita ohjelmisto ja anna minun tarkkailla
Julkaistu 27.9.2017 15.47.58 |
Alkuperäinen osoite: https://www.52pojie.cn/thread-591949-1-1.html
Älä paina uudelleen ilman lupaa, äläkä ilmoita lähdettä uudelleenjulkaisun yhteydessä.
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com