Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 14835|Répondre: 3

Analyser le protocole QQ Quick Login et implémenter « CSRF »

[Copié le lien]
Publié sur 21/03/2017 15:45:47 | | | |
Comme nous le savons tous, Tencent a utilisé Activex pour implémenter la connexion rapide QQ, en l’utilisant sur un navigateur inconnu, et la première chose à faire a été d’installer le contrôle QuickLogin.
Juste au moment où je ne sais pas quand, la connexion rapide n’a soudainement plus besoin des contrôles.
À ce moment-là, j’étais très perplexe, quelle méthode étrange Tencent utilisait-elle pour interagir avec les applications locales ?

Sans plugins, les pages web ne devraient pas pouvoir interagir directement avec les applications locales (sauf si un protocole est défini, mais qui ne peut être appelé qu’aux résultats fournis par le programme).

Par hasard (enfin, je m’ennuyais juste à regarder le gestionnaire des tâches, à découvrir le httpd natif et à trouver Apache en marche), j’ai soudain réalisé une possibilité : si QQ ouvre un port local, crée un serveur web, c’est-à-dire un serveur TCP conforme au protocole HTTP, puis que la page web ajax fait une requête à ce QQ (actuellement en tant que serveur web), pouvez-vous obtenir le résultat ?

Et c’est vraiment le résultat.


Web JS initie une requête GET pour http://localhost.ptlogin2.qq.com (portages de 4300 à 4308, un par un vers le succès).
En le pingant, il verra qu’il est 127.0.0.1, et quand vous vérifiez le port, il est bien QQ en usage.

Première demande : /pt_get_uins ?callback=ptui_getuins_CB&r=0.5919004196050326&pt_local_tk=399224727
pt_local_tk des cookies, quoi que ce soit ; r est un nombre aléatoire

Le résultat obtenu est un tableau JSON :
var var_sso_uin_list=[{"account » :"Connecté au compte QQ »,"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) ;

Ensuite, utilisez-http://ptlogin2.qq.com/getface pour obtenir des avatars QQ, ce qui ne sera pas abordé ici

Ainsi, vos informations QQ peuvent être affichées sur la page web.

Quand vous appuyez sur votre avatar (lorsque vous sélectionnez cette connexion)

Les requêtes suivantes sont générées :
http://localhost.ptlogin2.qq.com:4300/pt_get_st?clientuin=你的QQ号&callback=ptui_getst_CB&r=0.7293395590126179&pt_local_tk=399224727
De même, r est un nombre aléatoire, pt_local_tk provient d’un cookie, local_token
À quoi sert cette demande ?


Eh bien, Set-Cookie.

Ensuite, procédez à la demande
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
Le seul U1 ici est l’adresse de destination

Cette demande vous renverra tous les cookies dont vous avez besoin, et vous êtes connecté.

Après avoir appris le protocole, un problème sérieux a été découvert : que se passe-t-il si un programme (au cœur noir) fait ces choses au nom de l’utilisateur ?

Commencez dès maintenant !

Je n’avais qu’un Mac sous la main, alors je l’ai écrit en Obj-C.

[self GET :@"http://localhost.ptlogin2.qq.com:4300/pt_get_uins?callback=ptui_getuins_CB&r=0.47178753013324637&pt_local_tk=-1211438011 » en-tête :nil] ;
//这里的GET是我自己封装的一个方法,GET网页上的数据

Note : En raison de mon expérience précédente avec les bots QQ (basé sur le protocole WebQQ) : l’en-tête Referer est très important (il doit s’agir d’un nom de domaine .qq.com), une fois qu’il est incorrect, il échouera forcément. Il n’y a donc pas de ronds-points ici

Au fait, j’étais nouveau en Obj-C à l’époque, et certains codes peuvent sembler un peu ridicules, veuillez m’excuser.
//cookiedata是个NSDictionary




Ainsi, la connexion est terminée, vous pouvez trouver une interface QQ Space (non publiée ici), et le post est réussi.

Qu’est-ce que cela signifie ? Cela signifie que tant que c’est un programme qui tourne localement, il y a une chance de se connecter à QQ à votre place, et de réaliser des opérations sournoises sur des plateformes comme QQ Space qui ne nécessitent pas d’authentification secondaire




Précédent:Populariser les connaissances : Comprendre en profondeur la différence entre px et em et rem en CSS
Prochain:Surveillance de la vitesse Internet en temps réel du XDU Meter [Code source]
Publié sur 21/03/2017 16:36:43 |
Je serai ce programmeur au cœur noir
 Propriétaire| Publié sur 21/03/2017 16:44:46 |
Xiaozhe Publié le 21-03-2017 à 16:36
Je serai ce programmeur au cœur noir

Allez, allez, écris un logiciel et laisse-moi observer
Publié sur 27/09/2017 15:47:58 |
Adresse originale : https://www.52pojie.cn/thread-591949-1-1.html
Merci de ne pas réimprimer sans consentement, et de ne pas indiquer la source lors de la réimpression.
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com