Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 14835|Antwort: 3

QQ Quick Login Protokoll analysieren und "CSRF" implementieren

[Link kopieren]
Veröffentlicht am 21.03.2017 15:45:47 | | | |
Wie wir alle wissen, nutzte Tencent Activex, um QQ-Schnellanmeldung in einem unbekannten Browser zu implementieren, und das Erste, was getan wurde, war, die QuickLogin-Steuerung zu installieren.
Gerade wenn ich nicht weiß, wann, braucht der Schnell-Login plötzlich keine Steuerung mehr.
Damals war ich sehr verwirrt: Welche seltsame Methode nutzte Tencent, um mit lokalen Anwendungen zu interagieren?

Ohne Plugins sollten Webseiten nicht direkt mit lokalen Anwendungen interagieren können (es sei denn, ein Protokoll ist definiert, aber es kann nur aufgerufen werden und nicht die vom Programm bereitgestellten Ergebnisse).

Zufällig (naja, ich war einfach gelangweilt, im Task-Manager zu schauen, das native httpd zu entdecken und Apache laufen zu sehen), wurde mir plötzlich eine Möglichkeit klar: Wenn QQ einen lokalen Port öffnet, einen Webserver erstellt, also einen TCP-Server, der dem HTTP-Protokoll entspricht, und dann der Webseiten-Ajax eine Anfrage an diesen QQ stellt (zu diesem Zeitpunkt als Webserver), kannst du das Ergebnis bekommen?

Und das ist wirklich das Ergebnis.


Web JS initiiert eine GET-Anfrage an http://localhost.ptlogin2.qq.com (Ports von 4300-4308, nacheinander zum Erfolg).
Wenn man pingt, findet man, dass es 127.0.0.1 ist, und wenn man den Port überprüft, ist tatsächlich QQ im Einsatz.

Erste Anfrage: /pt_get_uins?callback=ptui_getuins_CB&r=0.5919004196050326&pt_local_tk=399224727
pt_local_tk von Keksen, was auch immer es ist; r ist eine Zufallszahl

Das zurückgegebene Ergebnis ist ein JSON-Array:
var var_sso_uin_list=[{"account":"Logged in QQ account","face_index":-1,"gender":0,"nickname":"Your QQ spitzname","uin":"Still your QQ account","client_type":66818,"uin_flag":8388612}]; ptui_getuins_CB(var_sso_uin_list);

Dann nutze http://ptlogin2.qq.com/getface, um QQ-Avatare zu erhalten, die hier nicht besprochen werden

So können Ihre QQ-Informationen auf der Webseite angezeigt werden.

Wenn du deinen Avatar drückst (wenn du diesen Login auswählst)

Die folgenden Anfragen werden generiert:
http://localhost.ptlogin2.qq.com:4300/pt_get_st?clientuin=你的QQ号&callback=ptui_getst_CB&r=0.7293395590126179&pt_local_tk=399224727
Ähnlich ist r eine Zufallszahl, pt_local_tk stammt von einem Keks, local_token
Was bewirkt diese Anfrage?


Na dann, Set-Cookie.

Dann fahren Sie mit der Anfrage fort
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
Die einzige U1 hier ist die Zieladresse

Diese Anfrage bringt alle benötigten Cookies zurück, und du bist eingeloggt.

Nachdem ich das Protokoll gelernt hatte, wurde ein ernstes Problem entdeckt: Was passiert, wenn ein (schwarzherziges) Programm diese Dinge im Namen des Nutzers tut?

Fang jetzt an!

Ich hatte nur einen Mac zur Hand, also schrieb ich es in 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网页上的数据

Hinweis: Aufgrund meiner bisherigen Erfahrung mit QQ-Bots (basierend auf dem WebQQ-Protokoll): Der Referer-Header ist sehr wichtig (es muss ein .qq.com-Domainname sein), und wenn er falsch ist, wird er definitiv scheitern. Hier gibt es also keine Kreisverkehre

Übrigens war ich damals neu bei Obj-C, und mancher Code mag etwas albern wirken, bitte verzeihen Sie mir.
//cookiedata是个NSDictionary




So ist der Login abgeschlossen, und du findest eine QQ-Space-Oberfläche (hier nicht veröffentlicht), und der Beitrag ist erfolgreich.

Was bedeutet das? Das bedeutet, solange es sich um ein lokal laufendes Programm handelt, besteht die Möglichkeit, den QQ-Login statt dir selbst durchzuführen und einige hinterhältige Operationen auf Plattformen wie QQ Space durchzuführen, die keine sekundäre Authentifizierung erfordern




Vorhergehend:Wissen popularisieren: Verstehe den Unterschied zwischen Unit px und em und rem in CSS gründlich
Nächster:XDU-Meter Echtzeit-Internetgeschwindigkeitsüberwachung [Quellcode]
Veröffentlicht am 21.03.2017 16:36:43 |
Ich werde dieser schwarzherzige Programmierer sein
 Vermieter| Veröffentlicht am 21.03.2017 16:44:46 |
Xiaozhe veröffentlicht am 21.3.2017, 16:36 Uhr
Ich werde dieser schwarzherzige Programmierer sein

Komm schon, komm schon, schreib eine Software und lass mich beobachten
Veröffentlicht am 27.09.2017 15:47:58 |
Ursprüngliche Adresse: https://www.52pojie.cn/thread-591949-1-1.html
Bitte drucken Sie nicht ohne Zustimmung erneut ab und geben Sie beim Nachdruck keine Quelle an.
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com