这段文件名为AWD-Platform网络攻防比赛平台源码.7z的压缩包包含了用于组织和参与网络安全攻防演练的比赛平台源代码,适用于教育与研究目的。
一个AWD攻防比赛的裁判平台版本为beta v2.0,使用Python3与Django开发。
该平台分为两部分:裁判机及靶机。通过特定接口实现靶机flag与服务器之间的通信。
**搭建流程**
1. **裁判机安装所需环境**
- 确保已安装了python3和django。
- 全局搜索woshiguanliyuan并替换为随机字符串,这是管理平台地址的一部分。例如,在`/untitled/urls.py`文件中:
```python
path(random_string/, views.admin, name=admin),
path(random_string/table/, views.admin_table, name=admin_table)
```
- 修改`app/views.py`中的第31和47行,将路径替换为实际使用的目录。例如:
```python
(/var/www/awd_platform/app/qwe.txt, a)
```
2. **修改管理文件**
在`app/management/commands/init.py`中添加用户信息,格式如下:
```python
user = [
[用户名1, 靶机token1, 靶机token1],
[用户名2, 靶机token2, 靶机token2]
]
```
3. **初始化平台**
运行以下命令完成环境配置和启动服务:
```bash
python3 manage.py init
python3 manage.py runserver --insecure
```
**靶机安装所需环境**
- 确保已安装python及requests库。
- 修改`send_flag.py`中的参数,并将其放置在靶机中,赋予执行权限700。例如:
```bash
sudo chmod +x send_flag.py
```
该脚本用于生成并发送flag到裁判平台。
```python
import requests, time, random, string, hashlib
token = woshiwuxudong # 红队的token值,如:311F8A54SV9K6B5FF4EAB20536
def getFlag():
m = hashlib.md5(.join(random.sample(string.ascii_letters + string.digits, 48)).encode(utf-8)).hexdigest()
return m
while True:
with open(/flag, w) as f:
flag = getFlag()
data = {flag: flag,
token: token,
baji: baji}
r = requests.post(http://127.0.0.1/caipanflag/, data=data)
print(r.text)
time.sleep(300)
```
**重要须知**
- 增加了flag验证的一次性失效机制,确保每个用户仅可提交一次有效flag。
- 引入排名系统以展示比赛中的实时情况。
- 将flag改为MD5格式增加安全性。
- 设定规则:丢失一个flag将扣除100分。