Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 14835|Atbildi: 3

Analizējiet QQ ātrās pieteikšanās protokolu un ieviesiet "CSRF"

[Kopēt saiti]
Publicēts 21.03.2017 15:45:47 | | | |
Kā mēs visi zinām, Tencent izmantoja Activex, lai ieviestu QQ ātru pieteikšanos, izmantojot to nepazīstamā pārlūkprogrammā, un pirmā lieta, kas jādara, bija instalēt QuickLogin vadīklu.
Tikai tad, kad es nezinu, kad, ātrajai pieteikšanās pēkšņi nav nepieciešama kontrole.
Tajā laikā es biju ļoti neizpratnē, kādu dīvainu metodi Tencent izmantoja, lai mijiedarbotos ar vietējām lietojumprogrammām?

Bez spraudņiem tīmekļa lapām nevajadzētu būt iespējai tieši mijiedarboties ar vietējām lietojumprogrammām (ja vien nav definēts protokols, bet to var izsaukt tikai, nevis programmas sniegtos rezultātus).

Nejauši (labi, vienkārši garlaicīgi, aplūkojot uzdevumu pārvaldnieku un atklājot vietējo httpd, un atrodot Apache darbojas), es pēkšņi sapratu iespēju: ja QQ atver vietējo portu, izveido tīmekļa serveri, tas ir, TCP serveri, kas atbilst HTTP protokolam, un tad tīmekļa lapa ajax pieprasa šo QQ (šobrīd kā tīmekļa serveri), vai jūs varat iegūt rezultātu?

Un tas patiešām ir rezultāts.


Web JS uzsāk GET pieprasījumu http://localhost.ptlogin2.qq.com (porti no 4300-4308, pa vienam līdz panākumiem).
Ping tas atradīs, ka tas ir 127.0.0.1, un, pārbaudot portu, tas patiešām tiek izmantots QQ.

Pirmais pieprasījums: /pt_get_uins?callback=ptui_getuins_CB&r=0.5919004196050326&pt_local_tk=399224727
pt_local_tk no sīkdatnēm, neatkarīgi no tā, kas tas ir; r ir nejaušs skaitlis

Atgrieztais rezultāts ir JSON masīvs:
var var_sso_uin_list=[{"account":"Pieteicies QQ kontā","face_index":-1,"gender":0,"nickname":"Jūsu QQ segvārds","uin":"Joprojām jūsu QQ konts","client_type":66818,"uin_flag":8388612}]; ptui_getuins_CB var_sso_uin_list. punkts;

Pēc tam izmantojiet http://ptlogin2.qq.com/getface, lai iegūtu QQ iemiesojumus, kas šeit netiks apspriesti

Tādā veidā jūsu QQ informāciju var parādīt tīmekļa lapā.

Nospiežot savu iemiesojumu (izvēloties šo pieteikšanos)

Tiek ģenerēti šādi pieprasījumi:
http://localhost.ptlogin2.qq.com:4300/pt_get_st?clientuin=你的QQ号&callback=ptui_getst_CB&r=0.7293395590126179&pt_local_tk=399224727
Līdzīgi r ir nejaušs skaitlis, pt_local_tk ir no sīkdatnes, local_token
Kāds ir šis pieprasījums?


Nu, iestatīt sīkdatni.

Pēc tam turpiniet pieprasījumu
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
Vienīgais U1 šeit ir galamērķa adrese

Šis pieprasījums atgriezīs visas nepieciešamās sīkdatnes, un jūs esat pieteicies.

Tātad, apgūstot protokolu, tika atklāta nopietna problēma: kas notiek, ja (melnsirdīga) programma dara šīs lietas lietotāja vārdā?

Sāciet tūlīt!

Man bija tikai Mac pa rokai, tāpēc es to uzrakstīju 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网页上的数据

Piezīme: Sakarā ar manu iepriekšējo pieredzi QQ robotos (pamatojoties uz WebQQ protokolu): Referer galvene ir ļoti svarīga (tam jābūt .qq.com domēna nosaukumam), tiklīdz tas ir nepareizs, tas noteikti neizdosies. Tātad šeit nav apļveida krustojumu

Starp citu, tajā laikā es biju jauns Obj-C, un daži kodi var šķist mazliet muļķīgi, lūdzu, piedodiet man.
//cookiedata是个NSDictionary




Tādā veidā pieteikšanās ir pabeigta, un jūs varat atrast QQ telpas interfeisu (nav publicēts šeit), un ziņa ir veiksmīga.

Ko tas nozīmē? Tas nozīmē, ka, kamēr tā ir programma, kas darbojas lokāli, ir iespēja pabeigt QQ pieteikšanos jūsu vietā un veikt dažas viltīgas darbības tādās platformās kā QQ telpa, kurām nav nepieciešama sekundārā autentifikācija




Iepriekšējo:Popularizējiet zināšanas: Rūpīgi izprotiet atšķirību starp vienību px un em un rem CSS
Nākamo:XDU skaitītāja reāllaika interneta ātruma uzraudzība [avota kods]
Publicēts 21.03.2017 16:36:43 |
Es būšu šis melnsirdīgais programmētājs
 Saimnieks| Publicēts 21.03.2017 16:44:46 |
Xiaozhe Publicēts 2017-3-21 16:36
Es būšu šis melnsirdīgais programmētājs

Nāc, nāc, uzrakstiet programmatūru un ļaujiet man novērot
Publicēts 27.09.2017 15:47:58 |
Sākotnējā adrese: https://www.52pojie.cn/thread-591949-1-1.html
Lūdzu, nepārdrukājiet bez piekrišanas un, lūdzu, nenorādiet avotu atkārtotas drukāšanas laikā.
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com