一次awdplus经历(网鼎杯线下赛)

开头

首先谈谈awdplus吧。个人觉得其实有点像今年的ciscn,其实就是ctf多了一个修题的环节。与awd差别还是挺大的,全程不会接触靶机,不需要ssh连,所以也不存在什么准备各种牛鬼蛇神的脚本,还是比较轻松的,每轮到了时间,拿到flag了,提交,平台会自动攻击未成功防御的选手

上图是其中一道题,攻击就只需要打自己的网站,比如你通过未过滤的命令执行点获得了flag,提交,即代表攻击成功。然后防御需要你写过滤后的源码,与update.sh一起打包成.tar.gz格式的文件,update.sh 里写mv -f 文件名 目标路径,上传到ftp后,在平台上点答题,填入压缩包文件名,平台会自动用exp打,如果exp打失败了,即为修补成功

小tricks:这里问了几个师傅,比如在今年一道目录穿越的题上,我是通过过滤..的方法修补成功,但也有师傅直接把小写的flag,改成大写的flag,exp同样打失败,判断为修补成功,所以exp打的方式可能比较单一苛刻,很多方法都可以起到防御的作用。

web_AliceWebsite

这题比较简单,拿到源码后直接丢到D盾里

可以看到直接爆出,找到对应文件路径,确定位置,源码如下:

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

可以看到这里用户传入的action并没有任何的过滤,直接可以目录穿越

payload: ?action=../../../../flag

防御:

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

这里通过新建一个黑名单,过滤..和../的方法防御成功

FAKA

(源码和复现buu上均有,我就懒得放源码了)

somd5大法好,比赛的时候太难了,找到了md5密码,解不出来,跑也跑不出来,气个半死

后台就是/admin,进入后台后,发现|备份管理|添加备份|下载处同样是目录穿越,吐槽一下,同一个知识点怎么还考两次

function downloadBak() {
        $file_name = $_GET['file'];
        $file_dir = $this->config['path'];
        if (!file_exists($file_dir . "/" . $file_name)) { //检查文件是否存在
            return false;
            exit;
        } else {
            $file = fopen($file_dir . "/" . $file_name, "r"); // 打开文件
            // 输入文件标签
            header('Content-Encoding: none');
            header("Content-type: application/octet-stream");
            header("Accept-Ranges: bytes");
            header("Accept-Length: " . filesize($file_dir . "/" . $file_name));
            header('Content-Transfer-Encoding: binary');
            header("Content-Disposition: attachment; filename=" . $file_name);  //以真实文件名提供给浏览器下载
            header('Pragma: no-cache');
            header('Expires: 0');
            //输出文件内容
            echo fread($file, filesize($file_dir . "/" . $file_name));
            fclose($file);
            exit;
        }
    }

防御的话一样做个黑名单,过滤一下即可

看了师傅们博客还有其他很多思路,这里就不赘述了

太菜了,没进总决赛,只有这两道题wp

posted @ 2020-11-30 18:28  kar3a  阅读(5715)  评论(0编辑  收藏  举报