2020第二届“网鼎杯”网络安全大赛半决赛赛题

Posted by ColasDAD on 26 Aug, 2022

再一次去打酱油了,只是这次酱油打的有点意思,一道PWN都不会的我,居然凭一己之力,靠AliceWebsite的攻防和BabyJS全场第2、小组第1的防守,把队伍带进了小组TOP30排行榜^_^。老规矩,这里把赛题拿出来分享。

WEB部分

AliceWebsite

下载地址web_AliceWebsite,解压密码w3LcOm3_t0_WDB2020!。 这题真的很基础,简单的PHP文件包含漏洞。进攻:直接index页面action参数后面跟file:///flag就出结果了。防守也很简单,index.php里面把php部分的判断写死即可,如下:

<?php
$action = (isset($_GET['action']) ? $_GET['action'] : 'home.php');
if ($action=='home.php') {
    include 'home.php';
} else if ($action=='about.php') {
    include 'about.php';
} else {
    echo "File not found!";
}
?>

faka

下载地址web_faka,解压密码w3LcOm3_t0_WDB2020!

这题我作为没php环境的酱油人,现场没做出来,大家可以参考一下别人的题解,最终问题还是文件包含。

babyJS

下载地址web_babyJS,解压密码8652ee29ebef5a49

这题进攻我不会,但是防守成功。题目内容提示“nodejs的url库真好用”,自然而然想到的就去审计调用url的地方去了,在\routes\index.js里debug的get请求部分有使用var u=req.query.url.replace(/[\"\']/ig,'');替换掉“’”和“””单双引号,虽然我不懂nodejs,但是本能的感觉变量u会存在问题,直接两个地方都都对u进行限制防御,一开始尝试限制字符“flag”没效果,接着尝试限制“%”时防守成功。代码如下:

router.get('/debug', function(req, res, next) {
    console.log(req.ip);
    if(blacklist.indexOf(req.ip)!=-1){
        console.log('res');
    var u=req.query.url.replace(/[\"\']/ig,'');
    u=u.replace('%','');
    console.log(url.parse(u).href);
    let log=`echo  '${url.parse(u).href}'&gt;&gt;/tmp/log`;
    console.log(log);
    child_process.exec(log);
    res.json({data:fs.readFileSync('/tmp/log').toString()});
    }else{
        res.json({});
    }
});

router.post('/debug', function(req, res, next) {
    console.log(req.body);
    if(req.body.url !== undefined) {
        var u = req.body.url;
        u=u.replace('%','');
    var urlObject=url.parse(u);
    if(blacklist.indexOf(urlObject.hostname) == -1){
        var dest=urlObject.href;
        request(dest,(err,result,body)=&gt;{
            res.json(body);
        })
    }
    else{
        res.json([]);
    }
    }
});

可以估计这题有urlencode绕过的问题,懂nodejs的大佬来解释一下。 babyJS这题是下半场才放出的,估计很多大佬都没想到会用nodejs这种比较新的语言,没任何准备。我这歪打正着防守成功那一霎那真是我队的高光时刻,直接让排名直线上升。让这次酱油之旅居然充满了惊喜和意外,同时也让自己感叹,还是需要扎实的基础啊。

PWN部分

easypwn

下载地址pwn_easypwn,解压密码w3LcOm3_t0_WDB2020!

lua_uaf

下载地址pwn_lua_uaf,解压密码w3LcOm3_t0_WDB2020!

orwheap

下载地址pwn_orwheap,解压密码w3LcOm3_t0_WDB2020!

crypto-system

下载地址pwn_crypto-system,解压密码85223e7ca4c2b3b3

ciri

下载地址pwn_ciri,解压密码没有,有志者试试爆破吧。


   网络安全   

 Share on: Twitter / Facebook / Google+ / Email