Java技术
声明:本文旨在技术讨论,强烈鄙视利用这种方法投放病毒,毒害他人的行为!!!
校内网的涂鸦板,可以自己写HTML,但还是有限制的,不能有script。今天就来看看有没有办法突破限制,执行脚本,玩点花样:),别做坏事哦。
校内网的涂鸦板,可以自己写HTML,但还是有限制的,不能有script。今天就来看看有没有办法突破限制,执行脚本,玩点花样:),别做坏事哦。
php中的正则表达式的preg_match_all可一次得出一二维数组用来多次匹配,比如:
preg_match_all('/<img src="([^"])">/','<img src="1.jpg"> <img src="2.jpg"> <img src="3.jpg">',$arr);
可得到这样一个数组:
Array
(
[0] => Array
(
[0] => <img src="1.jpg">
[1] => <img src="2.jpg">
[2] => <img src="3.jpg">
)
[1] => Array
(
[0] => 1.jpg
[1] => 2.jpg
[2] => 3.jpg
)
)
而同样的功能用js来实现,可能就要麻烦点,用匿名RexExp对象的exec方法只能匹配到第一个<img src="1.jpg">,网上最常见的就是用非匿名RegExp对象加循环进行多次匹配。
以下方法,使用匿名RegExp对象实现reg_match_all类似功能:
var arr=new Array();
arr[0]='<img src="1.jpg"> <img src="2.jpg"> <img src="3.jpg">'.match(/<img src="([^"])">/g);
arr[1]=new Array();
for(var i=0;i<arr[0].length;i++)
arr[1][i]=/<img src="([^"])">/.exec(arr[0][i]);
preg_match_all('/<img src="([^"])">/','<img src="1.jpg"> <img src="2.jpg"> <img src="3.jpg">',$arr);
可得到这样一个数组:
Array
(
[0] => Array
(
[0] => <img src="1.jpg">
[1] => <img src="2.jpg">
[2] => <img src="3.jpg">
)
[1] => Array
(
[0] => 1.jpg
[1] => 2.jpg
[2] => 3.jpg
)
)
而同样的功能用js来实现,可能就要麻烦点,用匿名RexExp对象的exec方法只能匹配到第一个<img src="1.jpg">,网上最常见的就是用非匿名RegExp对象加循环进行多次匹配。
以下方法,使用匿名RegExp对象实现reg_match_all类似功能:
var arr=new Array();
arr[0]='<img src="1.jpg"> <img src="2.jpg"> <img src="3.jpg">'.match(/<img src="([^"])">/g);
arr[1]=new Array();
for(var i=0;i<arr[0].length;i++)
arr[1][i]=/<img src="([^"])">/.exec(arr[0][i]);
1、IE与Firefox下实现方式不同,可通过以下方式兼容:
[codes=js]
function createXMLHttpRequest() {
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; i<versions.length; i++) {
try {
request = new ActiveXObject(versions[i]);
if(request) {
return request;
}
} catch(e) {
//alert(e.message);
}
}
}
return request;
}
[/codes]
2、避免进行跨与访问
若无法避免可通过服务器 对象 XMLHTTP进行中转
3、对于返回的responseXML,只在请求的URL能通过XML验证时才有效
4、responseXML.documentElement可得到根元素
5、getElementsByTagName的参数,ie支持多级标签如"body//div//a",firefox则不支持,"*"得到所有元素
[codes=js]
function createXMLHttpRequest() {
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; i<versions.length; i++) {
try {
request = new ActiveXObject(versions[i]);
if(request) {
return request;
}
} catch(e) {
//alert(e.message);
}
}
}
return request;
}
[/codes]
2、避免进行跨与访问
若无法避免可通过服务器 对象 XMLHTTP进行中转
3、对于返回的responseXML,只在请求的URL能通过XML验证时才有效
4、responseXML.documentElement可得到根元素
5、getElementsByTagName的参数,ie支持多级标签如"body//div//a",firefox则不支持,"*"得到所有元素
动态加载js:
[codes=js]
var script=document.createElement("script");
script.text="alert(1);";
var body=document.getElementsByTagName('body')[0];
body.appendChild(script);
[/codes]
或者
[codes=js]
var script=document.createElement("script");
script.src='test.js';
var body=document.getElementsByTagName('body')[0];
body.appendChild(script);
[/codes]
注意:网页中必须存在body元素
[codes=js]
var script=document.createElement("script");
script.text="alert(1);";
var body=document.getElementsByTagName('body')[0];
body.appendChild(script);
[/codes]
或者
[codes=js]
var script=document.createElement("script");
script.src='test.js';
var body=document.getElementsByTagName('body')[0];
body.appendChild(script);
[/codes]
注意:网页中必须存在body元素







