HTB - JavaScript Deobfuscation
混淆
前往jsconsole 輸入以下乾淨請求:
1 | |
接下來我們使用混淆工具Javascript Obfuscator
輸入跟剛剛同樣指令
混淆後可以看到指令變成無法輕易看懂的文字了
1 | |
一樣回到jsconsole 輸入混淆過後的指令
會發現輸出結果是一樣的。
這種類型的混淆我們稱為打包,通常可以從初始函數“function(p,a,c,k,e,d)”看出來
進階混淆可以到obfuscator
可以看到有超多選項
去混淆
若使用打包方法進行混淆的話,可以使用這個簡易線上工具 來查看原code
常見文字編碼:
- base64
- hex
- rot13
當碰到看不懂的字串可以到Cipher Identifier 看看能不能辨識出來是什麼編碼
例如:

確認是base64後我們可以用Base64 編碼 / 解碼 進行解碼
最後將解出來的值帶回請求
實作題
嘗試研究網頁的 HTML 程式碼,並識別其中使用的 JavaScript 程式碼。所使用的 JavaScript 檔案的名稱是什麼?
找到 JavaScript 程式碼後,嘗試運行它,看看它是否執行任何有趣的功能。你得到了什麼回報嗎?
您可能已經注意到,JavaScript 程式碼被混淆了。嘗試應用您在此模組中學到的技能來解混淆程式碼並檢索「標誌」變數。
嘗試分析去混淆的 JavaScript 程式碼,並了解其主要功能。完成此操作後,請嘗試複製它正在執行的操作以獲取金鑰。鑰匙是什麼?
獲得密鑰後,嘗試確定它的編碼方法並對其進行解碼。然後使用解碼後的金鑰「key=DECODED_KEY」向同一上一頁發送「POST」請求。你拿到的旗幟是什麼?
第一題,連線至標的後打開查看原始碼即可。
第二題,打開js腳本後,直接複製前往jsconsole 執行即可。
第三題
由於整串很難讀懂,因此我們將腳本放到簡易線上工具 整理一下
題目詢問Flag的變數,因此我們將整理完的變數輸出到jsconsole
第四題,首先讓我們看乾淨的原始碼
1 | |
可以看到除了前面兩題外中間還有一個POST到keys.php
我們依照上面撰寫的進行POST
第五題,我們將前面拿到的字串放到16進制解碼器後將拿到的值帶入參數到標的
