贵州省第二届大学生网络安全大赛决赛wp——awd

image-20231216104109979

今年的决赛没有采用Dawd的模式,只采用了awd模式。比的就是一个手速和代码审计能力,这对于我来说就很友好。

吐槽

上了一个检查的日志的脚本php的代码的:

<?php
error_reporting(0);
define('LOG_FILENAME', 'log.txt');	
if (!function_exists('waf_c3ting')) {
    function waf_c3ting() {
        if (!function_exists('getallheaders')) {
            function getallheaders() {
                foreach ($_SERVER as $name => $value) {
                    if (substr($name, 0, 5) == 'HTTP_') $headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5))))) ] = $value;
                }
                return $headers;
            }
        }
        $get = $_GET;
        $post = $_POST;
        $cookie = $_COOKIE;
        $header = getallheaders();
        $files = $_FILES;
        $ip = $_SERVER["REMOTE_ADDR"];
        $method = $_SERVER['REQUEST_METHOD'];
        $filepath = $_SERVER["SCRIPT_NAME"];
        //rewirte shell which uploaded by others, you can do more
        foreach ($_FILES as $key => $value) {
            $files[$key]['content'] = file_get_contents($_FILES[$key]['tmp_name']);
            file_put_contents($_FILES[$key]['tmp_name'], "virink");
        }
        unset($header['Accept']); //fix a bug
        $input = array(
            "Get" => $get,
            "Post" => $post,
            "Cookie" => $cookie,
            "File" => $files,
            "Header" => $header
        );
        //deal with
        $pattern = "select|insert|update|delete|and|or|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile|dumpfile|sub|hex";
        $pattern.= "|file_put_contents|fwrite|curl|system|eval|assert";
        $pattern.= "|passthru|exec|system|chroot|scandir|chgrp|chown|shell_exec|proc_open|proc_get_status|popen|ini_alter|ini_restore";
        $pattern.= "|`|dl|openlog|syslog|readlink|symlink|popepassthru|stream_socket_server|assert|pcntl_exec";
        $vpattern = explode("|", $pattern);
        $bool = false;
        foreach ($input as $k => $v) {
            foreach ($vpattern as $value) {
                foreach ($v as $kk => $vv) {
                    if (preg_match("/$value/i", $vv)) {
                        $bool = true;
                        logging($input);
                        break;
                    }
                }
                if ($bool) break;
            }
            if ($bool) break;
        }
    }

}
if (!function_exists('logging')) {
    function logging($var) {
        date_default_timezone_set("Asia/Shanghai");//修正时间为中国准确时间
        $time=date("Y-m-d H:i:s");//将时间赋值给变量$time
        file_put_contents(LOG_FILENAME, "\r\n\r\n\r\n" . $time . "\r\n" . print_r($var, true) , FILE_APPEND);
        // die() or unset($_GET) or unset($_POST) or unset($_COOKIE);
        
    }
}

waf_c3ting();
?>

然后第二轮之后主办方给我们说 我们上通防,扣分 被扣了100分,咱也不知道哇。没有限制就做记录攻击日志功能。但是做了就是做了, 就算球了。。。。。

在第一轮,使用了脚本获取到了大部分队的flag但是没有提交成功,flag不是每轮刷新的是定时的,时间很短就导致写的获取的脚本没有用,只能脚本+手动配合。

pwn 不会。。。。


web-1

使用Beescms_v4.0

环境地址:程序下载_BEESCMS_小程序源码_企业网站程序!

比赛时审计出来2个洞。 d盾 0洞 Seay源代码审计系统 0洞 人工审计 2洞(后台文件上传、登录有sql注入)

(并不是说工具不行,而是需要进行黑盒测试和白盒测试,后面web-3就很行)

后台文件上传: 修改Content-Type白名单为 image/jpeg或image/png 即可上传马子 然后在上传页面的文件列表里面找到我们上传马子名称,访问 地址+/upload/img/马子名称+.php 即可

登录有sql注入: image-20231216113914734

image-20231216113938166

image-20231216114015930

先验证用户名再验证密码

web-2

使用QCMS 3.0

比赛时审计出来2个洞。 d盾 0洞 Seay源代码审计系统 1洞(后门) 人工审计 1洞(后台文件上传)

(并不是说工具不行,而是需要进行黑盒测试和白盒测试,后面web-3就很行)

image-20231216114457253

后门利用: 后门地址Config/Controllers.php里面,有路由,分析代码发现只要访问后台的系统设置界面即可访问这个Controllers控制器, 地址+/backend/system.html?b1=system&b2=ls;即可利用成功

image-20231216114928127

文件上传: 后台系统设置logo可以上传木马 访问网站的静态文件地址即可获取路径 网站+Static/

web-3

这个是我们队拿分的关键,我们长期控制了超过队伍一半以上的shell

比赛时审计出来很多洞,但是时间原因没有都使用上。 d盾 n洞 人工审计 0洞

image-20231216115545581

成功利用了2个: config/emmm_Language.php config/emmm_version.php

其他的很多都是需要base64解码之后才能使用,时间原因就没有使用上

总结:很好玩的一次 awd 险胜

也认识了很多佬。

非常惊喜的是:每次的贵州大学生网络安全攻防大赛的奖励都是否的足啊!!!

非常感谢赛组委会和技术支持的奖励!!!

image-20231216120313339