提示中给了flag.txt,但是直接访问显示Page not found,有可能是因为权限限制我们不能直接访问。接下来查看源码看见最底下那行的js代码
点进去代码如下:
function myFunc(eventObj) {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("content").innerHTML = xhttp.responseText;
}
};
xhttp.open("POST", '/request');
xhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhttp.send("service=" + this.attributes.link.value);
}
var dep = document.getElementsByClassName('department');
for (var i = 0; i < dep.length; i++) {
dep[i].addEventListener('click', myFunc);
}
首先定义了一个名为myFunc
的函数,它接受一个事件对象eventObj
作为参数。在函数内部,创建了一个XMLHttpRequest对象xhttp
,用于发送HTTP请求到服务器。
通过xhttp.open
方法设置请求的类型为POST,并指定了请求的URL为"/request"。
接下来,通过xhttp.setRequestHeader
方法设置请求头的"Content-Type"为"application/x-www-form-urlencoded",表示请求体的格式为URL编码形式。
最后,通过xhttp.send
方法发送POST请求,请求体中包含了一个名为"service"的参数,其值为this.attributes.link.value
。这个值是从触发点击事件的元素的link
属性中获取的。
简而言之,我们可尝试构造POST请求,通过file://来获取本地文件信息
payload:
POST /request
service=file:///flag.txt