--- title: 從 Hack The Box 邀請碼學 Web 基礎 description: date: 2020/04/01 tags: DevTools, Js反混淆, 加/解密, POST request, 編/解碼 --- <!-- {%hackmd QnyEFBdERZebn4iQDXNPnA %} --> {%hackmd @yukai/medium-theme %} # 從 Hack The Box 邀請碼學 Web 基礎 ###### tags: `DevTools` `Js反混淆` `加/解密` `POST request` `編/解碼` [TOC] ## 0x00 前言 >Hack The Box[官網介紹](https://www.hackthebox.eu/individuals) >> A massive playground for you to learn and improve your pen-testing skills. 簡單來說,Hack The Box就是一個讓你~~挑戰極限~~滲透測試的地方。我自己在挑戰的時候, 也遇到許多挫折;不過也受益匪淺,透過尋找相關漏洞,也融會貫通舊有的Web知識。因此,我將這次的獲取HTB(Hack The Box)邀請碼挑戰過程紀錄下來,當作技術筆記。然而,想要登門挑戰,沒有三兩三,豈敢上梁山?因此HTB官網設置了第0關,想要登入,就必須先破解並獲取邀請碼註冊登入。 總共,五關卡。每破解一關,除了離取得邀請碼更近之外,也更進一步學習Web的基礎,著實看到HTB的用心良苦。 ## 0x01 挑戰入口 若要挑戰,請點擊此處:[HTB獲取邀請碼網址](https://www.hackthebox.eu/invite) - ![](https://i.imgur.com/9z5qQ4o.jpg) ## 0x02 使用開發者工具 首先,先開啟開發者工具(Mac:command+option+i; Win:F12)。在Console會發現一個骷髏頭畫面。 - ![](https://i.imgur.com/VzakUSN.jpg) 覺得事有玄機,因此將Element, Sources, Network頁籤全點開過一次。發現在Sources -> www.hackthebox.eu -> js -> inviteapi.min.js 裡面發現一個很特別的JavaScript的檔案。 - ![](https://i.imgur.com/NAvMuy8.jpg) inviteapi.min.js程式內容: - ![](https://i.imgur.com/Uz3Xc3r.jpg) 發現被混淆了,看不是很懂裡面的內容,但勉強可以看出它是一個function。 ## 0x03 將JavaScript反混淆 [Online JavaScript Beautifier](https://beautifier.io/) >是一個線上工具 >>用途:Beautify, unpack or deobfuscate JavaScript and HTML, make JSON/JSONP readable, etc. 使用方法,將程式碼複製貼上。再按下Beautify Code,即可獲得非混淆的程式碼。 - ![](https://i.imgur.com/1FNVWh8.jpg) 我們將程式碼反混淆後,得到兩個JavaScript function。 - ![](https://i.imgur.com/L6P5vrX.jpg) 第一個function似乎用來驗證邀請碼,第二個function用來產生邀請碼。兩個function與對應的網址以POST method傳遞資料。因為我們還沒有邀請碼,因此不用第一個function,而是用第二個function來產生驗證碼。 這邊有兩個方法可以產生邀請碼: 1. 直接在瀏覽器開發者工具中的console,下makeInviteCode() - ![](https://i.imgur.com/Jd5suCJ.jpg) 2. 使用curl ```=curl curl -X POST https://www.hackthebox.eu/api/invite/how/to/generate ``` 這邊我們填上相對應得domain(https://www.hackthebox.eu)與directory(/api/invite/how/to/generate) - ![](https://i.imgur.com/VUr6Yfx.jpg) 獲得資訊: ```=javascript data: "Va beqre gb trarengr gur vaivgr pbqr, znxr n CBFG erdhrfg gb /ncv/vaivgr/trarengr" enctype: "ROT13" ``` 原來是一個加密文字,透過ROT13加密。知道這些資訊後,接著便要開始解密了! ## 0x04 解密 隨手Google ROT13,發現了一個網站。 [ROT13線上解密](https://rot13.com) >根據[WikiPedia](https://en.wikipedia.org/wiki/ROT13) >>ROT13 ("rotate by 13 places", sometimes hyphenated ROT-13) is a simple letter substitution cipher that replaces a letter with the 13th letter after it, in the alphabet. ROT13 is a special case of the Caesar cipher which was developed in ancient Rome. Ctrl+c, Ctrl+v,線上解密後得到另一個網址。 - ![](https://i.imgur.com/AgEmwBr.jpg) 於是,我們繼續使用 curl,以 POST method 向https://www.hackthebox.eu/api/invite/generate/獲取資訊。 ## 0x05 發Request ```=curl curl -X POST https://www.hackthebox.eu/api/invite/generate/ ``` - ![](https://i.imgur.com/wppQRT9.jpg) 看到後面有一個=,大膽猜測這是Base64編碼(其常見的特徵)。上網搜尋Base64 decode online。 開始decode! ## 0x06 解碼 [Base64 decode](https://www.base64decode.org/) >根據[Wikipedia](https://www.wikiwand.com/en/Base64) >>In computer science, Base64 is a group of binary-to-text encoding schemes that represent binary data in an ASCII string format by translating it into a radix-64 representation. 複製貼上、解碼、獲得邀請碼(碼一下XD) - ![](https://i.imgur.com/qj6SjZB.jpg) 這樣就可以登入囉! - ![](https://i.imgur.com/rDKxRWW.jpg) ## 0x07 總結 ```flow st=>start: HTB invite網站 e=>end: Success op=>operation: 開法者工具 op2=>operation: JavaScript反混淆檔 op3=>operation: 解密 op4=>operation: 發Request op5=>operation: 解碼 st->op->op2->op3->op4->op5->e ``` 祝大家 Happy Hacking!