首页
社区
课程
招聘
[原创]一个简单的JS程序闯关_一个有趣的技巧
发表于: 2013-9-29 10:08 3016

[原创]一个简单的JS程序闯关_一个有趣的技巧

2013-9-29 10:08
3016
昨天在群里有人发的这么一个网站,做了LEVEL ONE,觉得有一个有趣的技巧,和大家分享一下。入门级,大牛误笑

http://ctf.noconname.org/    此网站地址

进入LEVEL ONE后,看到这是传统的找Key题目,没有提示,就先看源码了。


发现当页面提交的时候,会执行encrypt()函数,但是js文件在哪呢,用chrome可以简单的找到。



对,就是这里,该网页只有两个js文件,一个是我们都很熟悉的injected.js,另一个肯定就是我们需要的encrypt()函数所在的文件了。
打开此文件,有点傻眼了,怎么都是16进制格式的,如Code:

_0x52ae=["\x66\x20\x6F\x28\x38\x29\x7B\x63\x20\x69\x2C\x6A\x3D\x30\x3B\x6B\x28\x69\x3D\x30\x3B\x69\x3C\x38\x2E\x6C\x3B\x69\x2B\x2B\x29\x7B\x6A\x2B\x3D\x28\x38\x5B\x69\x5D\x2E\x73\x28\x29\x2A\x28\x69\x2B\x31\x29\x29\x7D\x67\x20\x74\x2E\x75\x28\x6A\x29\x25\x76\x7D\x66\x20\x70\x28\x68\x29\x7B\x68\x3D\x68\x2E\x71\x28\x30\x29\x3B\x63\x20\x69\x3B\x6B\x28\x69\x3D\x30\x3B\x69\x3C\x77\x3B\x2B\x2B\x69\x29\x7B\x63\x20\x35\x3D\x69\x2E\x78\x28\x79\x29\x3B\x6D\x28\x35\x2E\x6C\x3D\x3D\x31\x29\x35\x3D\x22\x30\x22\x2B\x35\x3B\x35\x3D\x22\x25\x22\x2B\x35\x3B\x35\x3D\x7A\x28\x35\x29\x3B\x6D\x28\x35\x3D\x3D\x68\x29\x41\x7D\x67\x20\x69\x7D\x66\x20\x6E\x28\x38\x29\x7B\x63\x20\x69\x2C\x61\x3D\x30\x2C\x62\x3B\x6B\x28\x69\x3D\x30\x3B\x69\x3C\x38\x2E\x6C\x3B\x2B\x2B\x69\x29\x7B\x62\x3D\x70\x28\x38\x2E\x71\x28\x69\x29\x29\x3B\x61\x2B\x3D\x62\x2A\x28\x69\x2B\x31\x29\x7D\x67\x20\x61\x7D\x66\x20\x42\x28\x39\x29\x7B\x63\x20\x32\x3B\x32\x3D\x6E\x28\x39\x2E\x64\x2E\x65\x29\x3B\x32\x3D\x32\x2A\x28\x33\x2B\x31\x2B\x33\x2B\x33\x2B\x37\x29\x3B\x32\x3D\x32\x3E\x3E\x3E\x36\x3B\x32\x3D\x32\x2F\x34\x3B\x32\x3D\x32\x5E\x43\x3B\x6D\x28\x32\x21\x3D\x30\x29\x7B\x72\x28\x27\x44\x20\x64\x21\x27\x29\x7D\x45\x7B\x72\x28\x27\x46\x20\x64\x20\x3A\x29\x27\x29\x7D\x39\x2E\x47\x2E\x65\x3D\x6E\x28\x39\x2E\x64\x2E\x65\x29\x3B\x39\x2E\x48\x2E\x65\x3D\x22\x49\x22\x2B\x6F\x28\x39\x2E\x64\x2E\x65\x29\x3B\x67\x20\x4A\x7D","\x7C","\x73\x70\x6C\x69\x74","\x7C\x7C\x72\x65\x73\x7C\x7C\x7C\x68\x65\x78\x5F\x69\x7C\x7C\x7C\x73\x74\x72\x7C\x66\x6F\x72\x6D\x7C\x7C\x7C\x76\x61\x72\x7C\x70\x61\x73\x73\x77\x6F\x72\x64\x7C\x76\x61\x6C\x75\x65\x7C\x66\x75\x6E\x63\x74\x69\x6F\x6E\x7C\x72\x65\x74\x75\x72\x6E\x7C\x66\x6F\x6F\x7C\x7C\x68\x61\x73\x68\x7C\x66\x6F\x72\x7C\x6C\x65\x6E\x67\x74\x68\x7C\x69\x66\x7C\x6E\x75\x6D\x65\x72\x69\x63\x61\x6C\x5F\x76\x61\x6C\x75\x65\x7C\x73\x69\x6D\x70\x6C\x65\x48\x61\x73\x68\x7C\x61\x73\x63\x69\x69\x5F\x6F\x6E\x65\x7C\x63\x68\x61\x72\x41\x74\x7C\x61\x6C\x65\x72\x74\x7C\x63\x68\x61\x72\x43\x6F\x64\x65\x41\x74\x7C\x4D\x61\x74\x68\x7C\x61\x62\x73\x7C\x33\x31\x33\x33\x37\x7C\x32\x35\x36\x7C\x74\x6F\x53\x74\x72\x69\x6E\x67\x7C\x31\x36\x7C\x75\x6E\x65\x73\x63\x61\x70\x65\x7C\x62\x72\x65\x61\x6B\x7C\x65\x6E\x63\x72\x79\x70\x74\x7C\x34\x31\x35\x33\x7C\x49\x6E\x76\x61\x6C\x69\x64\x7C\x65\x6C\x73\x65\x7C\x43\x6F\x72\x72\x65\x63\x74\x7C\x6B\x65\x79\x7C\x76\x65\x72\x69\x66\x69\x63\x61\x74\x69\x6F\x6E\x7C\x79\x65\x73\x7C\x74\x72\x75\x65","","\x66\x72\x6F\x6D\x43\x68\x61\x72\x43\x6F\x64\x65","\x72\x65\x70\x6C\x61\x63\x65","\x5C\x77\x2B","\x5C\x62","\x67"];eval(function (_0x7038x1,_0x7038x2,_0x7038x3,_0x7038x4,_0x7038x5,_0x7038x6){_0x7038x5=function (_0x7038x3){return (_0x7038x3<_0x7038x2?_0x52ae[4]:_0x7038x5(parseInt(_0x7038x3/_0x7038x2)))+((_0x7038x3=_0x7038x3%_0x7038x2)>35?String[_0x52ae[5]](_0x7038x3+29):_0x7038x3.toString(36));} ;if(!_0x52ae[4][_0x52ae[6]](/^/,String)){while(_0x7038x3--){_0x7038x6[_0x7038x5(_0x7038x3)]=_0x7038x4[_0x7038x3]||_0x7038x5(_0x7038x3);} ;_0x7038x4=[function (_0x7038x5){return _0x7038x6[_0x7038x5];} ];_0x7038x5=function (){return _0x52ae[7];} ;_0x7038x3=1;} ;while(_0x7038x3--){if(_0x7038x4[_0x7038x3]){_0x7038x1=_0x7038x1[_0x52ae[6]]( new RegExp(_0x52ae[8]+_0x7038x5(_0x7038x3)+_0x52ae[8],_0x52ae[9]),_0x7038x4[_0x7038x3]);} ;} ;return _0x7038x1;} (_0x52ae[0],46,46,_0x52ae[3][_0x52ae[2]](_0x52ae[1]),0,{}));


这个怎么玩,这里就用到我说的技巧了,可能很简单,大牛们就不要笑了(当然我们也可以自己手动替换所有变量)。

技巧使用:
1.        首先我们将这段js加入到自己新建的html中,然后写入一个和原网页相同的form表单,新建1.html,写入如下代码。
如代码:
<html>
<script>
_0x52ae=["\x66\x20\x6F\x28\x38\x29\x7B\x63\x20\x69\x2C\x6A\x3D\x30\x3B\x6B\x28\x69\x3D\x30\x3B\x69\x3C\x38\x2E\x6C\x3B\x69\x2B\x2B\x29\x7B\x6A\x2B\x3D\x28\x38\x5B\x69\x5D\x2E\x73\x28\x29\x2A\x28\x69\x2B\x31\x29\x29\x7D\x67\x20\x74\x2E\x75\x28\x6A\x29\x25\x76\x7D\x66\x20\x70\x28\x68\x29\x7B\x68\x3D\x68\x2E\x71\x28\x30\x29\x3B\x63\x20\x69\x3B\x6B\x28\x69\x3D\x30\x3B\x69\x3C\x77\x3B\x2B\x2B\x69\x29\x7B\x63\x20\x35\x3D\x69\x2E\x78\x28\x79\x29\x3B\x6D\x28\x35\x2E\x6C\x3D\x3D\x31\x29\x35\x3D\x22\x30\x22\x2B\x35\x3B\x35\x3D\x22\x25\x22\x2B\x35\x3B\x35\x3D\x7A\x28\x35\x29\x3B\x6D\x28\x35\x3D\x3D\x68\x29\x41\x7D\x67\x20\x69\x7D\x66\x20\x6E\x28\x38\x29\x7B\x63\x20\x69\x2C\x61\x3D\x30\x2C\x62\x3B\x6B\x28\x69\x3D\x30\x3B\x69\x3C\x38\x2E\x6C\x3B\x2B\x2B\x69\x29\x7B\x62\x3D\x70\x28\x38\x2E\x71\x28\x69\x29\x29\x3B\x61\x2B\x3D\x62\x2A\x28\x69\x2B\x31\x29\x7D\x67\x20\x61\x7D\x66\x20\x42\x28\x39\x29\x7B\x63\x20\x32\x3B\x32\x3D\x6E\x28\x39\x2E\x64\x2E\x65\x29\x3B\x32\x3D\x32\x2A\x28\x33\x2B\x31\x2B\x33\x2B\x33\x2B\x37\x29\x3B\x32\x3D\x32\x3E\x3E\x3E\x36\x3B\x32\x3D\x32\x2F\x34\x3B\x32\x3D\x32\x5E\x43\x3B\x6D\x28\x32\x21\x3D\x30\x29\x7B\x72\x28\x27\x44\x20\x64\x21\x27\x29\x7D\x45\x7B\x72\x28\x27\x46\x20\x64\x20\x3A\x29\x27\x29\x7D\x39\x2E\x47\x2E\x65\x3D\x6E\x28\x39\x2E\x64\x2E\x65\x29\x3B\x39\x2E\x48\x2E\x65\x3D\x22\x49\x22\x2B\x6F\x28\x39\x2E\x64\x2E\x65\x29\x3B\x67\x20\x4A\x7D","\x7C","\x73\x70\x6C\x69\x74","\x7C\x7C\x72\x65\x73\x7C\x7C\x7C\x68\x65\x78\x5F\x69\x7C\x7C\x7C\x73\x74\x72\x7C\x66\x6F\x72\x6D\x7C\x7C\x7C\x76\x61\x72\x7C\x70\x61\x73\x73\x77\x6F\x72\x64\x7C\x76\x61\x6C\x75\x65\x7C\x66\x75\x6E\x63\x74\x69\x6F\x6E\x7C\x72\x65\x74\x75\x72\x6E\x7C\x66\x6F\x6F\x7C\x7C\x68\x61\x73\x68\x7C\x66\x6F\x72\x7C\x6C\x65\x6E\x67\x74\x68\x7C\x69\x66\x7C\x6E\x75\x6D\x65\x72\x69\x63\x61\x6C\x5F\x76\x61\x6C\x75\x65\x7C\x73\x69\x6D\x70\x6C\x65\x48\x61\x73\x68\x7C\x61\x73\x63\x69\x69\x5F\x6F\x6E\x65\x7C\x63\x68\x61\x72\x41\x74\x7C\x61\x6C\x65\x72\x74\x7C\x63\x68\x61\x72\x43\x6F\x64\x65\x41\x74\x7C\x4D\x61\x74\x68\x7C\x61\x62\x73\x7C\x33\x31\x33\x33\x37\x7C\x32\x35\x36\x7C\x74\x6F\x53\x74\x72\x69\x6E\x67\x7C\x31\x36\x7C\x75\x6E\x65\x73\x63\x61\x70\x65\x7C\x62\x72\x65\x61\x6B\x7C\x65\x6E\x63\x72\x79\x70\x74\x7C\x34\x31\x35\x33\x7C\x49\x6E\x76\x61\x6C\x69\x64\x7C\x65\x6C\x73\x65\x7C\x43\x6F\x72\x72\x65\x63\x74\x7C\x6B\x65\x79\x7C\x76\x65\x72\x69\x66\x69\x63\x61\x74\x69\x6F\x6E\x7C\x79\x65\x73\x7C\x74\x72\x75\x65","","\x66\x72\x6F\x6D\x43\x68\x61\x72\x43\x6F\x64\x65","\x72\x65\x70\x6C\x61\x63\x65","\x5C\x77\x2B","\x5C\x62","\x67"];eval(function(_0x7038x1,_0x7038x2,_0x7038x3,_0x7038x4,_0x7038x5,_0x7038x6){_0x7038x5=function (_0x7038x3){return(_0x7038x3<_0x7038x2?_0x52ae[4]:_0x7038x5(parseInt(_0x7038x3/_0x7038x2)))+((_0x7038x3=_0x7038x3%_0x7038x2)>35?String[_0x52ae[5]](_0x7038x3+29):_0x7038x3.toString(36));} ;if(!_0x52ae[4][_0x52ae[6]](/^/,String)){while(_0x7038x3--){_0x7038x6[_0x7038x5(_0x7038x3)]=_0x7038x4[_0x7038x3]||_0x7038x5(_0x7038x3);} ;_0x7038x4=[function (_0x7038x5) {return _0x7038x6[_0x7038x5];} ];_0x7038x5=function (){return _0x52ae[7];} ;_0x7038x3=1;} ;while(_0x7038x3--){if(_0x7038x4[_0x7038x3]){_0x7038x1=_0x7038x1[_0x52ae[6]]( new RegExp(_0x52ae[8]+_0x7038x5(_0x7038x3)+_0x52ae [8],_0x52ae[9]),_0x7038x4[_0x7038x3]);} ;} ;return _0x7038x1;} (_0x52ae[0],46,46,_0x52ae[3][_0x52ae[2]](_0x52ae[1]),0,{}));
</script>
<body>
<form action="" method="POST" onsubmit="return encrypt(this);">
    <table border=0 align="center">
     <tr>
        <td><label style="color: white" for="key"><b>Key: </b></label></td>
        <td><input type="text" name="password" id="password" class="input" ></td>
	<input type="hidden" name="key" id="key" value="">
	<input type="hidden" name="verification" id="verification" value="yes">
     </tr>
     <tr>
        <td colspan="2" align="center"><p><input type="submit" name="send" class="button" value="Send" ></p></td>
     </tr>
    </table>
    </form>
<span id="new"><span>
</body>
</html>


2.        使用IE打开,加载1.html,打开F12,点击脚本按钮,在script入口点_0x52ae那里下断点,如图。



3.        点击启动调试,然后再页面中Input中随意输入一些字符串,单击Send按钮,如图



就会进入js调试环节,然后奇迹出现了,ie把本来看不懂的js直接解析成明文js,如图



下来我们的任务就是把它拷贝出来,格式化一下就好,然后修改一下原来form表单的代码,使原来提交的代码不提交,就是将按钮的Type从submit变成buttion,然后加上一个onClick事件,调用encrypt()函数,格式化后的整个代码是
	<html>
<script>
function simpleHash(str) {
	var i, hash = 0;
	for (i = 0; i < str.length; i++) {
		hash += (str[i].charCodeAt() * (i + 1))
	}
	return Math.abs(hash) % 31337
}
function ascii_one(foo) {
	foo = foo.charAt(0);
	var i;
	for (i = 0; i < 256; ++i) {
		var hex_i = i.toString(16);
		if (hex_i.length == 1) hex_i = "0" + hex_i;
		hex_i = "%" + hex_i;
		hex_i = unescape(hex_i);
		if (hex_i == foo) break
	}
	return i
}
function numerical_value(str) {
	var i, a = 0,
	b;
	for (i = 0; i < str.length; ++i) {
		b = ascii_one(str.charAt(i));
		a += b * (i + 1)
	}
	return a
}
function encrypt(form) {
	var res;
	res = numerical_value(form.password.value);
	res = res * (3 + 1 + 3 + 3 + 7); //res=1063168/17=62539.2941
	res = res >>> 6;    //res=16612<<6=1063168
	res = res / 4;          //res=4153*4=16612
	res = res ^ 4153;   //res=4153
	if (res != 0) {
		alert('Invalid password!')
	} else {
		alert('Correct password :)')
	}
	form.key.value = numerical_value(form.password.value);
	form.verification.value = "yes" + simpleHash(form.password.value);
	return true
}
</script>
<body>
<form action="" method="POST" onsubmit="return encrypt(this);">
    <table border=0 align="center">
     <tr>
        <td><label style="color: white" for="key"><b>Key: </b></label></td>
        <td><input type="text" name="password" id="password" class="input" ></td>
	<input type="hidden" name="key" id="key" value="">
	<input type="hidden" name="verification" id="verification" value="yes">
     </tr>
     <tr>
        <td colspan="2" align="center"><p><input type="submit" name="send" class="button" value="Send" ></p></td>
     </tr>
    </table>
    </form>
<span id="new"><span>
</body>
</html>

现在有了源码,要做的就是分析这些源码了,我们可以轻易到找到encrpt()函数,发现它就是对我们的输入做了一系列的处理,最后如果处理结果为0,则我们就能得到这个key了,所以我们逆推上去,这几行代码
        res = numerical_value(form.password.value);
        res = res * (3 + 1 + 3 + 3 + 7); //res=1063168/17=62539.2941   (1)
        res = res >>> 6;    //res=16612<<6=1063168                                (2)       
        res = res / 4;          //res=4153*4=16612                                (3)
        res = res ^ 4153;   //res=4153                                                        (4)
要(4)中res为0,因为4153^4153才等于0,所以(3)左式的res必须为4153,则右式必须为16612,如此这样向上反推,最后得到(1)中左式res需要的值,由于(3)中的除整操作,所以导致上面的运算会有偏差,但是大致范围确定了,我们可以在62539附近进行尝试。分析numerical_value()函数,发现它的功能就是取当前输入字符串,然后按位取出相应的Ascci码值,与当前此字符在第几位乘起来,加上过去的值,要得到我们需要的62539,只需要进行一些次数的尝试,这里就不进行了。
进过修改后的代码如下
<html>
<script>
function simpleHash(str) {
	var i, hash = 0;
	for (i = 0; i < str.length; i++) {
		hash += (str[i].charCodeAt() * (i + 1))
	}
	return Math.abs(hash) % 31337
}
function ascii_one(foo) {
	foo = foo.charAt(0);
	var i;
	for (i = 0; i < 256; ++i) {
		var hex_i = i.toString(16);
		if (hex_i.length == 1) hex_i = "0" + hex_i;
		hex_i = "%" + hex_i;
		hex_i = unescape(hex_i);
		if (hex_i == foo) break
	}
//document.getElementById("new").innerHTML = document.getElementById("new").innerHTML + ",ascii_one=" + i ;
	return i
}
function numerical_value(str) {
	var i, a = 0,
	b;
	for (i = 0; i < str.length; ++i) {
		b = ascii_one(str.charAt(i));
		a += b * (i + 1)
	}
	return a
}
function encrypt(form) {
	var res;
	res = numerical_value(form.password.value);
	res = res * (3 + 1 + 3 + 3 + 7);
	res = res >>> 6;
	res = res / 4;
	res = res ^ 4153;
	if (res != 0) {
		alert('Invalid password!');
	} else {
		alert('Correct password :)');
	}
	form.key.value = numerical_value(form.password.value);
	form.verification.value = "yes" + simpleHash(form.password.value);
	return true;
}

function a(form)
{

var res;
var str = "";


res = numerical_value(form.password.value);
//需要res=1063168/17=62539.2941
document.getElementById("new").innerHTML = document.getElementById("new").innerHTML + "we need:62539.2941,res=" +  
res;
res = res * (3 + 1 + 3 + 3 + 7);

	document.getElementById("new").innerHTML = document.getElementById("new").innerHTML + ",output1=" + res;
	res = res >>> 6;
	document.getElementById("new").innerHTML = document.getElementById("new").innerHTML + ",output2=" + res;
	res = res / 4;
	document.getElementById("new").innerHTML = document.getElementById("new").innerHTML + ",output3=" + res;
	res = res ^ 4153;
	document.getElementById("new").innerHTML = document.getElementById("new").innerHTML + ",output4=" + res +  
"<br/>";
	if (res != 0) {
		//alert('Invalid password!');
	} else {
		//alert('Correct password :)');
		document.getElementById("new").innerHTML = document.getElementById("new").innerHTML + "--就是这个 
<br>";
	}

return false;

}
</script>
<body>
<form action="" method="POST" onsubmit="return a(this)">
    <table border=0 align="center">
     <tr>
        <td><label style="color: white" for="key"><b>Key: </b></label></td>
        <td><input type="text" name="password" id="password" class="input" ></td>
					<input type="hidden" name="key" id="key" value="">
					<input type="hidden" name="verification" id="verification" value="yes">
     </tr>
     <tr>
        <td colspan="2" align="center"><p><input type="submit" name="send" class="button" value="Send" ></p></td>
     </tr>
    </table>

    </form>
<table>
<tr>
<td>
<span id="new"><span>
</td>
</tr>
</table>
</body>

</html>

结果如图:


打完收工

[课程]Linux pwn 探索篇!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (15)
雪    币: 680
活跃值: (68)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
沙发不留
2013-9-29 10:14
0
雪    币: 185
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
用IE来解码这个不错。
2013-9-29 10:35
0
雪    币: 73
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
不错,分析得好
2013-9-29 10:37
0
雪    币: 783
活跃值: (710)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
mark下 等下试试
2013-9-29 13:51
0
雪    币: 10163
活跃值: (5037)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
分析得好
2013-9-29 14:49
0
雪    币: 26
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
初学者,来看看大师兄的作品
2013-9-29 16:48
0
雪    币: 211
活跃值: (52)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
汗 还用这样么,直接加个alert就结束了
2013-9-30 18:01
0
雪    币: 211
活跃值: (52)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
竟然过期了啊 不过第一关这个数学题我是搞不定了

第二关改下代码,
788f5ff85d370646d4caa9af0a103b338dbe4c4bb9ccbd816b585c69de96d9da

第三关逆一下,密码 " SURPRISE!"
9e0d399e83e7c50c615361506a294eca22dc49bfddd90eb7a831e90e9e1bf2fb
2013-9-30 18:03
0
雪    币: 680
活跃值: (68)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
10
试过alert(),不行诶,你那是怎么弄得绕过?
2013-9-30 20:01
0
雪    币: 217
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
16位代码转换为明文js代码居然可以这样玩,好吧你赢了
2013-9-30 20:54
0
雪    币: 341
活跃值: (85)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
12
分析得不错啊
2013-9-30 22:20
0
雪    币: 705
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
13
可以直接用chrome的console打印出函数内容,按F12,点左下角的第2个按钮show console,
在>后面输入函数名就可以直接看了:
> encrypt
function encrypt(form){var res;res=numerical_value(form.password.value);res=res*(3+1+3+3+7);res=res>>>6;res=res/4;res=res^4153;if(res!=0){alert('Invalid password!')}else{alert('Correct password :)')}form.key.value=numerical_value(form.password.value);form.verification.value="yes"+simpleHash(form.password.value);return true}
2013-10-4 22:12
0
雪    币: 680
活跃值: (68)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
14
学习了
2013-10-5 08:44
0
雪    币: 524
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
楼主用的chrome什么插件查看js的?
2013-10-5 21:57
0
雪    币: 680
活跃值: (68)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
16
chrome里自带的,直接F12就行,最后一个Tab就是Console
2013-10-6 12:21
0
游客
登录 | 注册 方可回帖
返回
//