1.下载附件
发现是js代码,并有乱码,改文件后缀为html打开
2、查看源文件发现,eval函数并不会执行$函数
将eval改为alert弹出js源码
3.整理源代码进行代码分析
可以使用在线JS代码格式优化整理代码---Online JavaScript beautifier
function $() {
var e = document.getElementById("c").value;
if (e.length == 16)
if (e.match(/^be0f23/) != null)
if (e.match(/233ac/) != null)
if (e.match(/e98aa$/) != null)
if (e.match(/c7be9/) != null) {
var t = ["fl", "s_a", "i", "e}"];
var n = ["a", "_h0l", "n"];
var r = ["g{", "e", "_0"];
var i = ["it'", "_", "n"];
var s = [t, n, r, i];
for (var o = 0; o < 13; ++o) {
document.write(s[o % 4][0]);
s[o % 4].splice(0, 1)
}
}
}
document.write('<input id="c"><button onclick=$()>Ok</button>');
delete _
这里用到了正则表达式
^表示开头一定要匹配到be0f23,$表示结尾一定要匹配到e98aa,其它的只要匹配到就好,没有位置要求
构造 c=be0f233ac7be98aa,注意重复部分,将长度控制在16
键入输入框,得到flag
PS:其实还有更简单的方法,修改if的判断条件恒为true就行