其实这个相信很多人都知道的,这里就再复现一下吧

其实这个主要是我们在电脑上登录了qq后,当我们需要用到qq去登录其他的时候我们就会来到一个快速登录的界面

比如我们在登录网页端的qq的时候,在电脑上登录了qq之后我们一点击登录就会出现一个单点登录,这种快捷方式就很容易被别人恶意利用

1111.jpg

我们可以来分析一下这个登录的主要流程

我们以qq群的登录为例子

https://qun.qq.com/

我们打开qq群的登录,发现打开首页,点击了登录之后就会去加载一段链接:

https://xui.ptlogin2.qq.com/cgi-bin/xlogin?appid=71xxxxx901&daid=73&pt_no_auth=1&s_url=https%3A%2F%2Fqun.qq.com%2F

222.jpg

我们可以单独打开看看,其实这个就是加载了单点登录的一个链接,其中的s_url应该是登录成功之后要跳转的链接

333.jpg

其实我们可以这样想,我们只是打开了一个网址而已,为什么他会获取到我们已经在电脑上登录的qq了呢?这个时候我们应该可以想到,其实是有可能在加载这个链接的时候他会先获取在电脑上登录的qq信息,我们刷新一下这个链接重新抓包看看

我们对每个包进行拦截分析,拦截到这个包,看到了他的返回值是这样的:

https://localhost.ptlogin2.qq.com:4301/pt_get_uins?callback=ptui_getuins_CB&r=0.40394900412518164&pt_local_tk=187XXXXX11

4444.jpg

可以看到这个的返回值就是我们已经登录了的qq的信息,为什么这么说呢,为了验证,我现在能查询到的只有一个qq的信息,这个qq的信息是我在电脑上登录信息,然后我再登录了一个账号之后再次发包之后是第二张图片的

5555.jpg

6666.jpg

我们来分析一下这个包,我们发现包会加载一个pt_local_tk参数,这个参数是怎么来的呢,其实如果你玩过用软件写post登录的话应该就会对这个很熟悉了(楼主以前就是经常用易语言写网站的post登录),这个值有可能会存在网页中,上次链接返回的cookie中,或者是本地js生成

其实我们在刷新的时候拦截到抓包其实就会知道的,我们用网页调试器去调试一个这个链接:

https://xui.ptlogin2.qq.com/cgi-bin/xlogin?appid=7XXXXXXX1&daid=73&pt_no_auth=1&s_url=https%3A%2F%2Fqun.qq.com%2F

发现这个会在返回的cookie中返回了一个: pt_local_token 值,其实我们发现 pt_local_token这个值是和 pt_local_tk 这个值是一样的

当然了,每次刷新了链接这个值也会发生变化,所以这个值不是固定的

77777.jpg

接下来我们点击登录

点击登录(又换了一个小号)

88888.jpg

点击了之后我们发现这个加载了一个链接,我们发现这个链接的加载

https://localhost.ptlogin2.qq.com:4301/pt_get_st?clientuin=92xxxxxx70&callback=ptui_getst_CB&r=0.007247505071141136&pt_local_tk=1870947411

发现这个链接的返回里面返回了一个 clientkey 

99999.jpg

我们继续跟进,我们发现在访问了这个链接之后发现这个链接的cookie中有有我们上一步返回的cookie—clientkey值做cookie做请求头,并且给我们返回了一个 skey 值和获取到一段地址

https://ssl.ptlogin2.qq.com/jump?clientuin=92XXXX0&keyindex=9&pt_aid=7XXXXXX1&daid=73&u1=https%3A%2F%2Fqun.qq.com%2F&pt_local_tk=624392265&pt_3rd_aid=0&ptopt=1&style=40

获取到的地址:

https://ptlogin2.qun.qq.com/check_sig?pttype=2&uin=9XXXXXX0&service=jump&nodirect=0&ptsigx=7b1a84a9154c395a311ad0f7ba7e6d7bd3638c404a3947cbc8e5babfc6b011bfff5638db792a10549aa78725c33859a4c3eb2e42212b4dcb0ebf66c7bda69f33&s_url=https%3A%2F%2Fqun.qq.com%2F&f_url=&ptlang=2052&ptredirect=100&aid=1000101&daid=73&j_later=0&low_login_hour=0&regmaster=0&pt_login_type=2&pt_aid=7XXXXXX1&pt_aaid=0&pt_light=0&pt_3rd_aid=0

1010.jpg

111111.jpg

121212121.jpg

我们继续跟进到加载了地址的的那个链接

https://ptlogin2.qun.qq.com/check_sig?pttype=2&uin=92xxxxx770&service=jump&nodirect=0&ptsigx=4657edbe8891286ca60f28620ab65c9d6ef3a2b94e4c1e56e936273092ba8adf5d4efac3c0bfab2db7a56385bd635bec62f3635d58ee00217baa48679b5c450a&s_url=https%3A%2F%2Fqun.qq.com%2F&f_url=&ptlang=2052&ptredirect=100&aid=1000101&daid=73&j_later=0&low_login_hour=0&regmaster=0&pt_login_type=2&pt_aid=715030901&pt_aaid=0&pt_light=0&pt_3rd_aid=0

13131313.jpg

这个链接加载了之后会302跳转到:qun.qq.com/,也就是我们一开始的s_url参数的值

1414141414.jpg

同时我们也发现了这个链接返回的cookie中会返回一个 p_skey 

1515151515.jpg

然后整个登录过程完成了

而至于我们为什么要这么做呢,接下来我给大家演示一下就明白了

这个是我们获取群里面成员的的接口链接

161616161616.jpg

17171717.jpg

我们也可以网页调试器上模拟这个接口,如下

181818181818181.jpg

这个时候我们就发现了,我们只需要一个就接口访问链接,加上他认证的cookis和协议头(Referer)就可以了

这个时候我们发现我们只需要cookies中的 p_skey  uin  skey 这三个值就可以调用接口了

其实这个对于那些经常写post的登录的那些人来说这个是习以为常的,那这个时候我们能怎么利用呢,我们可以这样想,他在打开链接的时候会获取在电脑上登录的qq,然后当点击的时候就会登录,点击登录就是点击了访问一个链接,这个时候我们弄成获取到了在电脑上登录的qq直接就访问点击登录的那个链接,也就相当于自动点击了。

其实上面的过程可以写一个程序进行操作,不过我们先来理理思路如何获取到 p_skey  uin skey 这三个的值

链接中参数 r=0.40394900412518164 的值这个不用理会,因为这个是现行时间戳,就像我们去访问一个图形验证码的时候后面跟着的现行时间戳一样,就算删除了之后还是一样可以的,所以可以不用理会,当然也可以加上,看个人喜欢

(1)、获取pt_local_tk值:

访问:

https://xui.ptlogin2.qq.com/cgi-bin/xlogin?appid=71xxxx01&daid=73&pt_no_auth=1&s_url=https%3A%2F%2Fqun.qq.com%2F

因为我们知道 pt_local_token 的值就是 pt_local_tk 的值

(2)、获取电脑上登录的qq信息

访问:

https://localhost.ptlogin2.qq.com:4301/pt_get_uins?callback=ptui_getuins_CB&r=0.40394900412518164&pt_local_tk=1870947411

我们知道了 pt_local_tk 是从第一步获取到

但是这步的获取需要协议头和cookie了如下,接下来的操作一样需要,可以自己进行操作添加,接下去就不截图网页调试器上的调试了

191919191919191.jpg

在返回包中可以获取到qq的登录信息

(3)、获取clientkey值做cookie

访问的链接:

https://localhost.ptlogin2.qq.com:4301/pt_get_st?clientuin=9xxxxx0&callback=ptui_getst_CB&r=0.007247505071141136&pt_local_tk=1870947411

我们发现这个 clientuin 的值其实就是我们的qq账号,我们可以从第二步中获取并使用正则匹配出来

在返回包的cookies中可以得到 clientkey 

(4)、获取skey值

访问的链接:

https://ssl.ptlogin2.qq.com/jump?clientuin=9xxxxx70&keyindex=9&pt_aid=715030901&daid=73&u1=https%3A%2F%2Fqun.qq.com%2F&pt_local_tk=624392265&pt_3rd_aid=0&ptopt=1&style=40

需要cookies和协议头:

Cookie:pt_local_token(通过第一步得到)、clientkey(通过第三步获取得到)

在返回包的cookies中可以得到skey值

(5)、获取p_skey值

访问我们从第四步得到的地址:

https://ptlogin2.qun.qq.com/check_sig?pttype=2&uin=9xxxxxx0&service=jump&nodirect=0&ptsigx=7b1a84a9154c395a311ad0f7ba7e6d7bd3638c404a3947cbc8e5babfc6b011bfff5638db792a10549aa78725c33859a4c3eb2e42212b4dcb0ebf66c7bda69f33&s_url=https%3A%2F%2Fqun.qq.com%2F&f_url=&ptlang=2052&ptredirect=100&aid=1000101&daid=73&j_later=0&low_login_hour=0®master=0&pt_login_type=2&pt_aid=715030901&pt_aaid=0&pt_light=0&pt_3rd_aid=0

在返回包的cookies中可以得到p_skey值

这样我们就获取到了 skey 值、 p_skey 值,而这个 uin 值就是我们的qq号码在前面加上o就可以了

而接下来我们要做的就是写一个脚本模拟这个登录的过程,就是写一个exe程序,当别人打开我们这个程序的时候我们就会得到他电脑已经登录的qq的这三个值,然后发送给我们的后台,有了这三个值之后你就可以调用qq的其他接口进行其他的操作都可以,比如发qq空间,删除日志。。。。。。等都可以完成。

以下为代码(本来是想用易语言写的,不过易语言写一个Hello Word的弹框都会报毒,想想还是算了,于是就用py写了)

下载链接:

https://link.zhihu.com/?target=https%3A//www.lanzous.com/i1fqije

功能呢的话可以自己再加,加个获取正式ip或者其他的功能也行,就是不要涉及敏感的就可以过360了

采用了加密的形式传输,以下为截图的一部分

202020202020.jpg

有一个特点就是编译出来的程序能过360

21212121212121.jpg

完美过360

那接下来的事情就是各位社工帝的事情了

这个是我搭建的后台点击了之后获取到的

222222222222222222222.jpg

注:本文仅供学习,请勿用于违法途径。

源链接

Hacking more

...