|
|
今天在网上看到有人发了强制聊天的工具,是web版的,于是谷歌了一下。找到了由杨元公布在乌云网上的bug,顺便测试了一下,可惜腾讯已经修复了。(表面上腾讯忽略了杨元的报告)4 R' ]+ x0 f ?# I3 c H7 O
在QQ空间中,有一个谁看过我的功能,然后我们把鼠标移到他们的头像上,会弹出一个信息卡片。
f; A5 E% [% V$ H0 |
9 b/ |. d, q1 ?' j1 d8 Z, w 1 d( | A! f+ W2 G4 S6 ]9 F3 T+ @
* \0 Y6 u2 x4 c6 m
信息卡片上有一个聊天功能,也就是这个接口,出现了严重的bug。抓包发现聊天的接口为:' H$ h! g3 ]% ]2 P; D" V
, E9 B$ L. b* U6 W/ N7 Z
http://r.cnc.qzone.qq.com/cgi-bin/user/cgi_tmp_talk?qzone_uin=20737302&to_uin=569550119&g_tk=1593160781
6 p N8 }1 L8 r! u6 k" ?% ~, v+ t3 P% v) N* H, t# O6 C% ]+ H: I
里边有两个重要参数qzone_uin发起QQ(以下简称sender),to_uin接收QQ(以下简称receiver),指定这两个参数后,请求接口,返回信息如下:, J* B' g g, ^' b& b
) ?1 d. i" K$ B3 q' i; v
K# J/ ^+ W3 j1 A) R<script type="text/javascript"> -
0 W, i$ N& x( {<!-- - 8 [, [! F% ~% q$ M8 Z; k) |- w# l
var url = 'tencent://message/?Menu=yes&uin=569550119&Service=112&SigT=ff8847c4116e035fd4b467f691cd9e42c0d413cec47eefb75d5e970421a2376ab400fffb0ea6cb8a&SigU=8a718a0cd8eba14b389fceb5788e72797b8a7eae107b9c43dd56bc7cc21090bccf67158b657963841c529232def3d416761799a1050acaaa29033f62f7fb46b5580fef571e7d82041508e926d65900ae77fae70b9cc4a341b7677c65b215d0327211235a5702bb6564157a3dfc11abe4'; - 7 o8 O g* {' d2 G2 X
location = url; - ! D. j0 W1 U, i4 l; C1 B) ~
//--> -
- </script>
6 E ~ z; @% z3 G
3 O) ?' L- ]- e: {" D0 Z6 K+ _; R, h6 t" V
这里边又有三个非常重要的数据,经过大量实践,发现:uin是接收人的QQ,SigT是receiver的指纹,SigU是sender的指纹。7 H6 C. m+ q+ W; |9 F
- n7 F* ^, c+ r+ y, c' P9 |
由此可见,有了这两个指纹,然后访问tencent://message/接口,就可以发起临时会话。4 D* q3 q9 p* d- ^6 W
% A2 a! z% u0 ^: h
0 ?; D k5 e8 A# S
3 Z/ v4 {) w" s' X3 l1 l# ^5 y5 m5 B, w, U# N7 z* P
这里边又有三个非常重要的数据,经过大量实践,发现:uin是接收人的QQ,SigT是receiver的指纹,SigU是sender的指纹。+ n2 F# V# I* J
' @ q8 Z2 L; G, N! Q$ f3 S" u由此可见,有了这两个指纹,然后访问tencent://message/接口,就可以发起临时会话。! y/ u8 V2 g- w! {
# L# D# @& P1 l' E; c1 u那怎么实现强聊呢?7 l% T ]7 j: ^0 r: s G8 z9 N
) ?% ?' d' E: X% O l% ]- @小虫直接说结论,想强聊,必须知道自己一个好友的QQ号和被聊人一个好友的QQ号。这两个条件均不难实现,自己的QQ好友您还不知道么。。。而被聊人的QQ好友,也是很容易获取的,比如你想和你同班的美女聊,那么班主任的QQ就是切入点。
% V5 t- N' p" M& P) q" w- W
8 K9 ~8 {% O/ x$ E' }为什么需要这么奇怪的条件呢?小虫直接演示。
, z; P h2 Q( G. K% D" _5 n
# C5 l& }4 p8 X; z7 J5 n( l6 l( c假设有四个角色,分别是A(发起人),AF(发起人好友),B(接收人),BF(接收人好友): j$ p: B) G6 [( F% Y1 J" [. t1 F
) J* W3 j" w) ]8 U第一步,我们需要在A和AF间建立一个通道,将A作为聊天的发起人,可以这样构造URL:' @, _7 [# M! q" k
9 p& [9 L% I; K- @1 H
http://r.cnc.qzone.qq.com/cgi-bin/user/cgi_tmp_talk?qzone_uin=A&to_uin=AF&g_tk=1593160781
' M* N9 f( _# v6 l: N0 L8 N0 h
" a) p1 `# M6 _& w0 Y* p2 q. T0 z: h, A/ j4 F4 |
在服务器返回的参数中,我们拿到SigU参数,这个也就是A作为sender的指纹。
6 p6 k+ v- T/ R8 `) p4 @4 G2 Z5 F w- F% w z3 \
第二步,我们在B和BF间建立一个通道,将B作为聊天接收人,可以这样构造URL:
D# S% F- z4 E$ S. ~( f. E M$ w4 S
http://r.cnc.qzone.qq.com/cgi-bin/user/cgi_tmp_talk?qzone_uin=BF&to_uin=B&g_tk=1593160781% X* h/ b2 _7 l( b7 V! p5 R& D f
6 b4 h! A0 x' g# n7 H( J4 B& D
在服务器返回的参数中,我们拿到SigT参数,这个也就是 B作为receiver的指纹。
. U% p5 ]- o0 ]* x, a) |( C# q4 [8 H' v
接下来我们把这两个指纹混合在一起,访问tencent://message/接口(别忘了加上最基本的uin参数,接收人QQ),恭喜,可以聊天了!
5 m/ W: J3 Q" d- T/ I3 z+ k. ^
% E9 I" H" E0 l* b6 l6 K9 E9 V0 b; h等等,好像有大问题,假如B和BF不是好友呢?我们并不能保证他们一定是好友,也就是说,我们是猜的。+ Q4 Z. e1 V1 j& y4 n
9 U+ \- g7 n- K
3 U" h5 k6 T2 I+ J1 {聪明的你可能已经发觉了,这个接口可以测试两个QQ号码是不是好友(前提是被测者未开通QQ在线状态,如果一方开通了这个服务,可以尝试将sender、receiver反过来)!!!
: h/ A8 p- @ k7 B% C* e& ^
' w. o* B% G6 {' \& B5 B这是多么邪恶的接口!
7 E; U' G A/ n/ D$ U7 }: @) S: A8 q/ l" V% I& H
不法分子可以通过这个接口收费帮别人测试好友,进而导致情侣隐私泄漏,夫妻感情破裂,进而导致社会不和谐,进而导致生产力下降,进而导致科技停止发展,严重阻碍人类进化。6 w% s! ]/ u' F m
/ b5 B2 P) {- u/ I9 U$ Z9 H: g
最后,补充一句,通过这个方法发起的临时会话,即使没有开启QQ在线状态服务也是可以的,除非你屏蔽了所有临时会话。: e5 Z! N/ T. u! T- f1 q
1 T& z; k" u: J |
|