CTF_WriteUp_HTTP基本認證(Basic access authentication)
阿新 • • 發佈:2020-03-29
## HTTP基本認證
在HTTP中,基本認證(英語:**Basic access authentication**)是允許http使用者代理(如:網頁瀏覽器)在請求時,提供使用者名稱和密碼 的一種方式。[HTTP基本認證](https://zh.wikipedia.org/wiki/HTTP基本認證/) 。
### 題目描述
![](https://cdn.jsdelivr.net/gh/c1ata/imgbed2020/img/0UaZ97sNd9.png)
點選連結後,題目出現了讓你輸入**使用者名稱和密碼**的彈窗。而通過提示資訊,我們知道使用者名稱大概率是**admin**。而加之題目附件給出了字典。那麼密碼一定在給出的字典中。我們可以通過burp來進行爆破。
### 解題過程
#### 抓包
首先設定火狐的代理,讓火狐的走burpsuit的代理**127.0.0.1:8080**
要想方便的話,還是要用火狐的外掛,方便切換代理。
同時在Burp端設定好截斷,監聽**127.0.0.1:8080**
然後攔截我們輸入密碼的那一次請求
確定之後,我們會在burp的代理頁面看到HTTP報文
我們注意到最後一行,`Authorization :Basic `後面應該是一行base64編碼。
解碼之後我們就可以發現,我們剛剛輸入的賬號名的密碼通過Base64 編碼加密了。
#### 爆破
在代理的介面右鍵轉發到測試器。
攻擊位置,我們選擇剛剛我們測試的**base64**。
然後我們設定payload
我們設定為自定義的迭代器
位置1
位置2
對我們的payload進行base64編碼處理
之後我們就可以開始進行爆破了。
篩選出來唯一一條正確響應的那條記錄
檢視響應包。
![](https://cdn.jsdelivr.net/gh/c1ata/imgbed2020/img/java_rqt1ZAJmAw.png)
獲取flag。
### 相關知識
#### HTTP基本認證
HTTP基本認證 是一種十分簡單的技術,使用的是 **HTTP頭部欄位** 強制使用者訪問網路資源,而不是通過必要的cookie、會話ID、登入頁面等(非獲取訪問控制的)手段。
在進行基本認證的**過程**裡,請求的**HTTP頭欄位會包含Authorization**欄位,形式如下: `Authorization: Basic <憑證>`,該憑證是**使用者和密碼的組和的base64編碼**。
##### 過程
首先請求一個需要身份認證的網頁,會有彈窗提示讓你輸入密碼。如果沒有提供使用者名稱和密碼,服務端會響應一個**401應答碼**,並提供一個認證域(Access Authentication):**頭部欄位**為:`WWW-Authenticate`,該欄位為要求客戶端**提供適配的認證資訊**。
```html
GET /private/index.html HTTP/1.0
Host: localhost
```
```html
HTTP/1.0 401 Authorization Required
Server: HTTPd/1.0
WWW-Authenticate: Basic realm="Secure Area"
Content-Type: text/html
Content-Length: 311
Error