0x01
打开附件看到的是HTML代码(一开始我错误地以为是JS),有一些夹杂的乱码,先试着放在浏览器里运行一下看有没有结果。将文件后缀改成html,然后从浏览器打开,页面中显示了一个输入框。
0x02
回头来分析一下源码,隐约可以看到有标签,还有一个_
的JS变量,最后通过eval
来运行了字符串里面的内容。虽然有些地方人看不懂,但不代表浏览器不能解析,所以试着通过浏览器来显示JS源码。
把末尾的eval(_)
改成console.log(_)
,然后再次从浏览器中打开这个页面,发现在控制台里显示了JS代码:
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 οnclick=$()>Ok</button>');
delete _
下面就有两种方式了,可以逐个满足if的正则,这个构造也不麻烦,构造完成以后输入:be0f233ac7be98aa
,点击OK就可获得FLAG
或者,直接把最后一个if里面的内容拿到浏览器中去执行一下,也会获得FLAG。