题目只给了一个附件,打开后发现存在一串js代码
修改后缀为html打开,得到的代码发现存在乱码,因为没有执行$()函数,而只仅仅执行字符串,导致html页面未能正常显示
<script>_='function $(){e=getEleById("c").value;length==16^be0f23233ace98aa$c7be9){tfls_aie}na_h0lnrg{e_0iit\'_ns=[t,n,r,i];for(o=0;o<13;++o){ [0]);.splice(0,1)}}} \'<input id="c">< οnclick=$()>Ok</>\');delete _var ","docu.)match(/"];/)!=null=[" write(s[o%4]buttonif(e.ment';for(Y in $=' ')with(_.split($[Y]))_=join(pop());eval(_)</script>
我们在将eval(),改成alert(_)显示出正常的代码
整理后得到
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的函数,从而打印出 document.write(s[o%4][0]);s[o%4].splice(0,1)}
第一个if表示e的长度为16位,
第二个if有个^表示开头一定要匹配到be0f23,
第三个if表示一定要匹配到233ac,
第四个if有个$表示结尾一定要匹配到e98aa,
第五个if表示一定要匹配到c7be9。
构造patyload
be0f233ac7be98aa
提交后得到flag
Flag:
flag{it's_a_h0le_in_0ne}