2019中关村第三届新兴领域专题赛网络与信息安全领域专项赛-web(部分)-wp

by ZacharyZcR

Game

一看就是个老虎机
image001-1

点进去。查看源代码。
image003-1
image005-1
转到score.php

POST数据:score=15,结束。

image007-1

who_are_you?

image009-1

源代码。

image011
第一时间想到XXE实体注入。

image013

本地直接读/etc/passwd 成功

image015

php伪协议直接读index.php

<?php
libxml_disable_entity_loader(false);
$data = @file_get_contents('php://input');
$resp = '';
//$flag='flag{5b672535-fc14-4344-ab94-4e90d4948bd8}';
if($data != false){
    $dom = new DOMDocument();
    $dom->loadXML($data, LIBXML_NOENT);
    ob_start();
    $res  = $dom->textContent;
    $resp = ob_get_contents();
    ob_end_clean();
    if ($res){
        die($res);
    }

}
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>welcome</title>
    <link rel="stylesheet" href="./style.css">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">

</head>
<body class="contactBody">
<div class="wrapper">
    <div class="title">


    </div>


    <form method="post" class="form">
        <h1 id="title">请输入姓名</h1>
        <br/>
        <br/>
        <br/>
        <input type="text" class="name entry " id="name" name="name" placeholder="Your Name"/>
    </form>
    <button class="submit entry" onclick="func()">Submit</button>

    <div class="shadow"></div>
</div>

</body>
</html>
<script type="text/javascript">
    function play() {
        return false;
    }
    function func() {
        // document.getElementById().value
        var xml = '' +
            '<\?xml version="1.0" encoding="UTF-8"\?>' +
            '<feedback>' +
            '<author>' + document.getElementById('name').value+ '</author>' +
            '</feedback>';
        console.log(xml);
        var xmlhttp = new XMLHttpRequest();
        xmlhttp.onreadystatechange = function () {
            if (xmlhttp.readyState == 4) {
                // console.log(xmlhttp.readyState);
                // console.log(xmlhttp.responseText);
                var res = xmlhttp.responseText;
                document.getElementById('title').textContent = res
            }
        };
        xmlhttp.open("POST", "index.php", true);
        xmlhttp.send(xml);
        return false;
    };
</script>
</body>
</html>

在注释里,Flag到手。

show_me_your_image

image017

上传。

image019

image021

URL

变形base64。

不用去多次测试写出对照表。

规则三个一组,补位即可。

image023

直接用他的编码器来获取。

image025

去掉后面的.jpg

image027

保存网页。

image029

读取成功。
读提示里面的数据。

../../proc/self/cwd/templates/upload.html

image031

保存网页

image033

读就行了。

image035

image037