一个简单的xml注入题,源码提示说flag在/opt/flag.txt
里面,读一下即可得到flag
payload
]>
&a; a
源码发现提示
根据题目名字知道这是个无回显的xxe,因为这题没有回显,是blind xxe,所以我们需要构建一条带外信道提取数据,因此我们需要开启一下本地的阿帕奇服务,通过这个外信道把数据传给我们攻击者的服务器并且引用我们的dtd文件
构造的payload如下
写一个dtd文件,目录如图放在www/html的根目录下,内容为
">
bp里面发送的为
%remote;
%all;
%send;
]>
然后本地用nc对我们的1221端口进行监听,来监听从服务器端发过来的请求,对文件内容base64解码得到flag
这里为什么要用php的伪协议来读取数据呢,开始没有用伪协议,并没有读出来,这是因为通过参数实体引用获取到的数据,并不会进行urlencode,并且解析器对URL有一定限制,只要有回车换行(测试发现php中空格、等制表符也不允许),都会被检查为不合法URL,直接拦截这个请求,所以需要用php的伪协议来进行读取。
blind xxe 参考链接