Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 14835|Svar: 3

Analysera QQ Quick Login-protokollet och implementera "CSRF"

[Kopiera länk]
Publicerad på 2017-03-21 15:45:47 | | | |
Som vi alla vet använde Tencent Activex för att implementera QQ snabb inloggning, med hjälp i en okänd webbläsare, och det första man gjorde var att installera QuickLogin-kontrollen.
Precis när jag inte vet när, behöver snabbinloggningen plutsligt inte kontrollerna.
Vid den tiden var jag mycket förbryllad, vilken märklig metod använde Tencent för att interagera med lokala applikationer?

Utan plugins bör webbsidor inte kunna interagera direkt med lokala applikationer (om inte ett protokoll är definierat, men det kan bara anropas och inte resultaten som tillhandahålls av programmet).

Av en slump (eller ja, bara uttråkad av att titta i aktivitetshanteraren och upptäcka den inbyggda httpd:n, och hitta Apache igång), insåg jag plötsligt en möjlighet: om QQ öppnar en lokal port, skapar en webbserver, det vill säga en TCP-server som följer HTTP-protokollet, och sedan gör webbsidans ajax en förfrågan till den QQ (just nu som webbserver), kan du då få resultatet?

Och det är verkligen resultatet.


Web JS initierar en GET-förfrågan till http://localhost.ptlogin2.qq.com (portar från 4300-4308, en efter en till framgång).
Ping den visar att det är 127.0.0.1, och när du kollar porten är det faktiskt QQ i bruk.

Första förfrågan: /pt_get_uins?callback=ptui_getuins_CB&r=0.5919004196050326&pt_local_tk=399224727
pt_local_tk från kakor, vad det nu är; r är ett slumptal

Resultatet som returneras är en JSON-array:
var var_sso_uin_list=[{"account":"Loggad in QQ account","face_index":-1,"gender":0,"nickname":"Your QQ nickname","uin":"Still your QQ account","client_type":66818,"uin_flag":8388612}]; ptui_getuins_CB(var_sso_uin_list);

Använd sedan http://ptlogin2.qq.com/getface för att få QQ-avatarer, vilket inte kommer att diskuteras här

På så sätt kan din QQ-information visas på webbsidan.

När du trycker på din avatar (när du väljer denna inloggning)

Följande förfrågningar genereras:
http://localhost.ptlogin2.qq.com:4300/pt_get_st?clientuin=你的QQ号&callback=ptui_getst_CB&r=0.7293395590126179&pt_local_tk=399224727
På liknande sätt är r ett slumpmässigt tal, pt_local_tk kommer från en cookie, local_token
Vad gör denna begäran?


Nåväl, Set-Cookie.

Sedan fortsätter du med förfrågan
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 enda U1 här är destinationsadressen

Denna begäran returnerar alla cookies du behöver, och du är inloggad.

Så efter att ha lärt sig protokollet upptäcktes ett allvarligt problem: vad händer om ett (svarthjärtat) program gör dessa saker för användarens räkning?

Sätt igång nu!

Jag hade bara en Mac till hands, så jag 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网页上的数据

Notera: På grund av min tidigare erfarenhet av QQ-botar (baserat på WebQQ-protokollet): Referer-headern är mycket viktig (det måste vara ett .qq.com-domännamn), och om den är fel kommer den definitivt att misslyckas. Så det finns inga rondeller här

Förresten, jag var ny på Obj-C då, och en del av koden kan verka lite fånig, förlåt mig.
//cookiedata是个NSDictionary




På så sätt är inloggningen slutförd, och du kan hitta ett QQ-utrymmesgränssnitt (ej publicerat här), och inlägget är framgångsrikt.

Vad betyder detta? Detta innebär att så länge det är ett program som körs lokalt finns det en chans att slutföra QQ-inloggningen istället för dig, och göra några listiga operationer på plattformar som QQ Space som inte kräver sekundär autentisering




Föregående:Popularisera kunskap: Förstå grundligt skillnaden mellan unit px och em och rem i CSS
Nästa:XDU-mätaren realtidsövervakning av internethastighet [Källkod]
Publicerad på 2017-03-21 16:36:43 |
Jag ska vara den här svarthjärtade programmeraren
 Hyresvärd| Publicerad på 2017-03-21 16:44:46 |
Xiaozhe publicerad den 2017-3-21 16:36
Jag ska vara den här svarthjärtade programmeraren

Kom igen, kom igen, skriv en ansökan och låt mig observera
Publicerad på 2017-09-27 15:47:58 |
Originaladress: https://www.52pojie.cn/thread-591949-1-1.html
Vänligen återpublicera inte utan samtycke, och ange inte källan vid återtryck.
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com