---
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!