AWD介绍

  • CTF中的线下赛又被称为AWD(attack with defence)
  • 对于选手的攻击能力,防御能力以及团队合作能力都有很高考验
  • 比赛中有多只队伍,每个队伍维护多台服务器,服务器中存在多个漏洞,利用漏洞攻击其他队伍可以进行得分,修复漏洞可以避免被其他队伍攻击失分
  • 初始状态所有队伍拥有一台相同的服务器(对于同一个题目来说),得到对方服务器中的flag并提交代表攻击成功,攻击对手的同时做好防御。

例如:

1

2

  • 提供的主机环境一般是liunx,具体的发行版一般以ubantu和centos为主,正规的主办方会尽可能修补操作系统中存在的漏洞
  • 一般不给root权限,只给一个能修改代码的低权限用户

比赛流程

开始入场时,首先配置本地的网络环境,一般ip是静态配置的,每个队都会拿到一个初始的说明材料。

主办方可能不给提供外网访问,需要自带外网连接设备,注意可能需要设置静态路由,不然双网可能不能同时访问。

比赛开始阶段,选手可能会拿到所有目标(包括靶场和flag服务器)的ip地址和访问端口,以及他们要维护的服务器的ssh用户名和密码。选手需要连上自己的服务器做一些基本的安全配置和代码、数据库备份。

比赛中期,选手通过审计代码中的漏洞,尝试去攻击其他队伍,获取flag,留好后门

比赛过程中可能遭受其他队伍的攻击,需要恢复代码、数据库,清除后门

分工协作

攻击、防御、运维

  • 攻击-攻击对手的服务
    • 在找到漏洞,修补完成的基础上,尽量攻击别人
    • 要求现场快速根据漏洞写出利用程序,读取攻击flag
    • 攻击需要自动化,同时攻击x个对手,攻击成功要自动提交flag获得分数
  • 攻击-分析流量直接反击
    • 由于快速攻击占据先机非常重要,分析完漏洞写攻击可能比对手慢很多
    • 直接从对手的攻击流量中学习并直接根据流量反击则快速很多
    • 需要一个快速通过丢分定位攻击流量并学习的机制
  • 防御-修补自己的服务
    • 针对逻辑进行修补
    • 针对危险函数修补
    • 修补服务可能造成无法通过主办方的可用性检查
    • 对方的攻击也有可能造成服务器失效
  • 运维
    • 快速熟悉服务器配置
    • 摸清网络主机
    • 备份数据
    • 防止服务被恶意中断
    • 定时下载分析流量

CTF-WAF

描述

针对CTF线下AWD比赛临时开发的WAF,能够拦截XSS、SQl、反序列化、菜刀/蚁剑、以及一些CTF常见的危险函数流量。可以绕过对页面检测的check,拦截返回正常页面的html。并且能够对简单payload进行流量转发,自动反打设置好的IP。如果比赛禁止使用通防也可以一键关闭通防,作为流量监控审计所用。

目录结构

CTF_WAF.php(WAF主要文件)
waflog(文件夹)
………ip.txt(需要反打的ip)
………log.php(日志审计系统)

使用方法

  • CTF_WAF.php包含进需要保护的文件
  • 开启WAF开关(CTF_WAF.php代码27行),设置返回页面(CTF_WAF.php代码26行),
1
2
3
$this->Waf_switch=1;//通防开启
$this->Waf_switch=0;//通防关闭
$this->resultPage="http://127.0.0.1/";//返回页面
  • 设置需要反打(流量转发)的主机,在waflog/ip.txt

    3

  • 模拟对本地主机进行攻击,可以发现并不会返回flag,说明对payload拦截成功

4

  • 查看waflog文件夹下发现生成了logs.txt和flag.txt说明生成了日志文件和flag文件,打开即可看到ip对应的flag

    5

  • 修改日志系统密码/waflog/log.php代码4行,修改密码

1
$passwd="admin";//修改密码
  • 登陆后台发现记录了攻击payload。

    6