題目隻給了一個附件,打開後發現存在一串js代碼
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2csETV650dNpWTyEleYhnRzwEMW1mY1RzRapnTtxkb5ckYplTeMZTTINGMShUYfRHelRHLwEzX39GZhh2css2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xyayFWbyVGdhd3LcV2Zh1Wa9M3clN2byBXLzN3btg3Pn5GcukzM0IDNwEjM3ATMwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
修改字尾為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}