zoukankan      html  css  js  c++  java
  • 一次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

  • 相关阅读:
    学习笔记 之《一线架构师实践》
    Java 面试汇总
    C++11移动语义之一(基本概念)
    C++中的RAII介绍
    Qt自定义控件之可伸缩组合框(GroupBox)控件
    redis集群中的增删查改
    redis设置密码
    Linux安装部署FTP服务器
    SSM + MySQL批量删除操作
    SSM
  • 原文地址:https://www.cnblogs.com/karsa/p/14062819.html
Copyright © 2011-2022 走看看