合天網安實驗室CTF-Web100-Give Me Flag

合天網安實驗室CTF-Web100-Give Me Flag

題目描述

  哎,不小心把代碼弄亂惹

相關附件

  web100.zip
gmf

參考解題步驟

1、下載附件打開後是一段JavaScript代碼,但看起來被混淆了
源文件是沒有換行的,我這裏手動換行以便觀察
code

2、試了一下直接翻譯,比如很容易看出getEleById中的 = ment,但後面的就很難判斷了。於是調整思路,直接用Chrome跑一下看看。(注意要將上一步的手動換行還原)
chrome
調試界面的代碼
chrome
還是不清楚,但可以看出大體的代碼邏輯:
  1) _(下劃線)被賦值爲第一行的整個字符串
  2) 第二行的for循環是對_(下劃線)中的字符串進行處理
  3) 使用eval()函數執行_(下劃線)中的字符串
  注:eval(string) 函數可計算某個字符串,並執行其中的的 JavaScript 代碼。

3、使用alert()顯示for循環處理後的_(下劃線)中的字符串
alert
網頁顯示
複製到VSCode格式化一下

<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 _
</script>

4、可以看出最內層if裏的代碼運行結果即爲答案
  flag{it’s_a_h0le_in_0ne}
flag

5、提交it's_a_h0le_in_0ne即可通過
通過

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章