天天看點

攻防世界:NaNNaNNaNNaN-Batman

題目隻給了一個附件,打開後發現存在一串js代碼

攻防世界:NaNNaNNaNNaN-Batman

修改字尾為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(_)顯示出正常的代碼

攻防世界:NaNNaNNaNNaN-Batman

整理後得到

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

攻防世界:NaNNaNNaNNaN-Batman

Flag:

flag{it's_a_h0le_in_0ne}