作者:手机用户2502927203 | 来源:互联网 | 2023-09-15 18:07
先记录一道题 输入框中输入的内容会被显示到上面的区域中。查看后台源码,有这样的一个片段functionXHR(){varxhr;try{xhrnewXMLHttpRequest()
先记录一道题
输入框中输入的内容会被显示到上面的区域中。查看后台源码,有这样的一个片段
function XHR() {
var xhr;
try {xhr = new XMLHttpRequest();}
catch(e) {
var IEXHRVers =["Msxml3.XMLHTTP","Msxml2.XMLHTTP","Microsoft.XMLHTTP"];
for (var i=0,len=IEXHRVers.length;i try {xhr = new ActiveXObject(IEXHRVers[i]);}
catch(e) {continue;}
}
}
return xhr;
}
function send(){
evil_input = document.getElementById("evil-input").value;
var xhr = XHR();
xhr.open("post","/api/v1.0/try",true);
xhr.Onreadystatechange= function () {
if (xhr.readyState==4 && xhr.status==201) {
data = JSON.parse(xhr.responseText);
tip_area = document.getElementById("tip-area");
tip_area.value = data.task.search+data.task.value;
}
};
xhr.setRequestHeader("Content-Type","application/json");
xhr.send('{"search":"'+evil_input+'","value":"own"}');
}
传入一个json形式的数组
传入json以后发现只是几个特定的值被记录下来。这里用到的就XXE漏洞
XML:可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。
adminpass
age
有些XML文档包含system标识符定义的“实体”,这些XML文档会在DOCTYPE头部标签中呈现。这些定义的’实体’能够访问本地或者远程的内容。比如,下面的XML文档样例就包含了XML ‘实体’。
]>
&entityex;
这里的entityex即我们引用的外部实体,在内容中又引用了SYSTEM,在服务器解析xml的时候就会触发SYSTME 进而执行file:///etc/passwd
找到了一个可以说明这个问题的实例:
点击下方的forget pwd,抓包。
查看返回包
引用xml实体,构造如下语句。
语句成功被解析。
在这道题中我们首先要将content-type改为application/xml 这样即可以识别xml结构。
根据上述特点构造
]>
&any;
得到flag