NaNNaNNaNNaN-Batman
1.判別檔案型別:
帶有SCRIPT標籤所以判斷是html檔案
2.亂碼:
唯一能看清的幾句:
- _='function ( ) 等 於 一 個 () _等於一個 ()等於一個函式內容 _是一個被賦予函式意義的變數
2.’)with(.split($[Y]))=join(pop());eval(_)
eval(_)函式執行 _,從這裡也看的出_是一個被eval執行的變數
按字串執行的,所以
核心程式碼:
eval函式,這是執行函式;這裡執行了_變數中的內容也就是’'中的內容,但是,要注意的是,它並沒有執行
(
)
函
數
,
僅
僅
執
行
了
字
符
串
而
已
(
從
而
導
致
亂
碼
)
,
因
而
頁
面
h
t
m
l
頁
面
沒
有
任
何
顯
示
,
只
顯
示
了
i
n
p
u
t
標
籤
的
內
容
,
但
是
我
們
想
讓
源
代
碼
正
常
顯
示
出
來
,
不
進
行
執
行
,
那
麼
,
我
們
就
用
到
了
a
l
e
r
t
彈
窗
(
將
e
v
a
l
函
數
改
為
a
l
e
r
t
)
,
將
亂
碼
的
()函式,僅僅執行了字串而已(從而導致亂碼),因而頁面html頁面沒有任何顯示,只顯示了input標籤的內容,但是我們想讓原始碼正常顯示出來,不進行執行,那麼,我們就用到了alert彈窗(將eval函式改為alert),將亂碼的
這裡可以使用瀏覽器開啟,也可以將修改後的原始碼放入控制檯執行(放入控制檯需要注意刪除script前後標籤)
瀏覽器開啟:
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 中的正則表示式條件,^表示開始,$表示結尾
在輸入框中輸入自己構造好的滿足正則表示式的程式碼,得到 flag