XCTF-高手进阶区:NaNNaNNaNNaN-Batman
生活随笔
收集整理的這篇文章主要介紹了
XCTF-高手进阶区:NaNNaNNaNNaN-Batman
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
XCTF-高手進階區:NaNNaNNaNNaN-Batman
目標:
- 了解js代碼(eval函數、splice函數)
- 了解正則
Writeup
(1)這里沒有目標環境,只有一個附件,好吧,那我們就下載下來
- 我這里先用sublime.txt打開看看
- 復制的源碼:
- 原來是js代碼,那么我們接下來右鍵用瀏覽器打開查看:
(2)那么我們就來進行js源代碼分析:
- _等于一個$函數內容
- 一個輸入框
- 核心代碼:
eval函數,這是執行函數;這里執行了_變量中的內容也就是''中的內容,但是,要注意的是,它并沒有執行$()函數,僅僅執行了字符串而已(從而導致亂碼),因而頁面html頁面沒有任何顯示,只顯示了input標簽的內容,但是我們想讓源代碼正常顯示出來,不進行執行,那么,我們就用到了alert彈窗(將eval函數改為alert),將亂碼的$()函數源碼完整顯示出來
這里可以使用瀏覽器打開,也可以將修改后的源代碼放入控制臺執行(放入控制臺需要注意刪除script前后標簽)
瀏覽器打開:
控制臺打開:
整理后如下圖所示:
又要分析上面這幅圖的代碼了…
我們的終極目標是打印出document.write(s[o%4][0]);s[o%4].splice(0,1)}
因此我們要滿足關鍵變量e的條件
這里又用到了正則表達式
^表示開頭一定要匹配到be0f23,$表示結尾一定要匹配到e98aa,其它的只要匹配到就好,沒有位置要求
于是我們構造e的值
將上面的核心代碼后綴改為html格式,打開如下圖所示
框中輸入e的值be0f233ac7be98aa,點擊Ok(當然你也可以在原來獲得的web100文件瀏覽器執行的輸入框中輸入be0f233ac7be98aa)
得到flag:
flag{it’s_a_h0le_in_0ne}
注1:當然,如果大家覺得構造麻煩,可以直接執行獲取flag的核心代碼,代碼如下
<script> 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)} </script>注2:
splice() 方法向/從數組中添加/刪除項目,然后返回被刪除的項目。
注釋:該方法會改變原始數組。
測試代碼:
<script> 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]; o=0; document.write(s[o%4][0]);s[o%4].splice(0,1);//輸出fl;隨后刪除fl /* 代碼運行詳解: 第一步:document.write(s[0][0]);s[0].splice(0,1); 第二步:document.write(t[0]);t.splice(0,1); 第三步:document.write("fl");刪除t["fl","s_a","i","e}"]中第一個位置,一個項目,即刪除fl */ document.write("<br>"); document.write(t); </script>總結
以上是生活随笔為你收集整理的XCTF-高手进阶区:NaNNaNNaNNaN-Batman的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 快手APP如何退出账号(最新快手APP下
- 下一篇: 韩剧tvapp怎么不能看了