题目链接:http://ctf.idf.cn/index.php?g=game&m=article&a=index&id=42
打开网页:
查看源代码 发现这一部分
将代码复制到控制台 把eval改为console.log运行
这时把e739b817fc23fd674d458210509e2744复制到输入框中 点击走你就出现答案啦!
上一步还可以选择加密解密工具 http://tool.chinaz.com/Tools/Escape.aspx ,把代码复制过去,显示如下:
从这里也可得知e739b817fc23fd674d458210509e2744 ,最终得出答案:
注:
1>unescape() 函数可对通过 escape() 编码的字符串进行解码
2>eval() 函数可计算某个字符串,并执行其中的的 JavaScript
代码,详见http://www.w3school.com.cn/jsref/jsref_eval.asp
3>关于console.log()详见http://www.jb51.net/article/48233.htm
对于JavaScript程序的调试,相比于alert(),使用console.log()是一种更好的方式,原因在于:alert()函数会阻断JavaScript程序的执行,从而造成副作用;而console.log()仅在控制台中打印相关信息,因此不会造成类似的顾虑
console.log()可以接受任何字符串、数字和JavaScript对象。与alert()函数类似,console.log()也可以接受换行符\n以及制表符\t。console.log()语句所打印的调试信息可以在浏览器的调试控制台中看到。不同的浏览器中console.log()行为可能会有所不同
与alert()函数类似,console.log()也可以接受变量并将其与别的字符串进行拼接:
var name = "Bob";
console.log("The name is: " + name);
与alert()函数不同的是,console.log()还可以接受变量作为参数传递到字符串中,其具体语法与C语言中的printf语法一致:
var people = "Alex";
var years = 42;
console.log("%s is %d years old.", people, years);
上述代码的执行结果为:”Alex is 42 years old.”