AWD平台搭建–Cardinal

本次使用的环境

Linux kali 5.3.0-kali2-amd64 #1 SMP Debian 5.3.9-3kali1 (2019-11-20) x86_64 GNU/Linux
docker
docker-compose
mysql #kali自带的mysql,需要自己启动
注:docker docker-compose必须要有,不然后面搭建靶机不成功。

使用的Cardina版本

https://github.com/vidar-team/Cardinal/releases
在这里插入图片描述

使用的靶机

https://github.com/glzjin/20190511_awd_docker
在这里插入图片描述

先将文件下载到本地,然后通过Xshell上传到kali上

用Xshell连接kali,可以先创建一个文件夹,
mkdir AWD
然后进入文件夹
cd AWD
上传并解压刚刚下载的Cardina
上传:rz
解压:tar -zxvf Cardinal_v0.7.3_linux_amd64.tar.gz
在这里插入图片描述

给Cardinal权限:chmod +x Cardinal

启动MySQL,创建数据库

启动数据库service mysql start
登入数据库mysql -u root -p
如果密码忘了或者没有密码的话,可以先改个密码
alter user ‘root’@‘localhost’ identified by ‘newpassword’;
newpassword是要设的新密码。
如果提示设置成功,则输入: flush privileges; 。完成后Ctrl+Z退出mysql,使用新密码重新登录即可。
在这里插入图片描述
创建数据库:
CREATE DATABASE cardinal DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
查看是否创建成功:
show databases;
在这里插入图片描述

搭建Cardinal平台

运行Cardinal

./Cardinal
在这里插入图片描述
在这里插入图片描述

根据提示选择安装即可

是否自行另外部署前端?(true / false,默认值:false)
这里必须选择false,不然后面会出错。看个人需求来把,建议选择默认
注:如果使用的是服务器,必须保证需要使用的端口是在控制台打开的,不然无法访问。(虚拟机kali不用管)
IP:19999端口是选手登入页面
IP:19999/manager 是管理员页面

登入后台

IP:19999端口是选手登入页面
IP:19999/manager 是管理员页面
eg:192.168.137.133:19999/manager(kali的IP)

管理后台

添加队伍并保存密码

在这里插入图片描述

添加题目,设置可见

在这里插入图片描述

更新Flag Shell:
echo {{FLAG}} > /flag
在根目录创建flag文件,并写入东西。
根据需要更改比赛名称,flag标识
在这里插入图片描述

靶机搭建

https://github.com/glzjin/20190511_awd_docker

下载并解压

像之前一样把文件下载到本地然后上传到虚拟机
在这里插入图片描述

解压:unzip 20190511_awd_docker-master.zip
在这里插入图片描述

文件名太长,那就把文件名重新命名一下
mv 20190511_awd_docker-master web1_1

容器搭建

进入 web1_1
修改 docker-compose.yml 文件
在这里插入图片描述

修改前:
在这里插入图片描述

修改后:
在这里插入图片描述

启动docker

docker-compose up -d --build
在这里插入图片描述

ps:如果出现以下报错,原因可能是因为端口被占用所以导致容器无法启动,可能是被正在运行的容器占用了端口,可以通过修改端口或者停止正在运行的容器的方法解决。
在这里插入图片描述

查看docker
查看镜像:docker images
查看正在运行的容器:docker ps
在这里插入图片描述

访问靶机

IP:8801
在这里插入图片描述

获取docker容器的SSH root用户密码

docker exec -it 容器id passwd
在这里插入图片描述

此密码也是该靶机的root用户密码

在cardinal上部署靶机

添加靶机

在这里插入图片描述

选择题目和队伍,IP为靶机IP,端口为靶机端口,密码为刚刚设置的靶机密码。
注意的是这里的Flag SSH 就是我们设定的容器root的账户密码,必须要有足够的权限,因为这里需要写入flag进容器。如果权限不够,无法写入Flag

测试ssh连接

在这里插入图片描述

生成flag

在这里插入图片描述
在这里插入图片描述

说明:一个动态的flag,如果不是后台被拿下,选手是不可能提前知道flag的

查看选手登入账号和密码

在这里插入图片描述
在这里插入图片描述
账号是glzjin 密码是123456

测试连接

用Xshell连接靶机
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
切换为root用户之后,可以看到flag。
本文借鉴:
https://cloud.tencent.com/developer/article/1744139

https://www.yuque.com/docs/share/b5d53ae0-08dd-45bc-bfb0-3b7c446c87b5?#%20%E3%80%8AAWD%E5%B9%B3%E5%8F%B0%E6%90%AD%E5%BB%BA%E3%80%8B

https://www.yuque.com/docs/share/8a945ec3-3126-4bd0-ad05-9a5acddb8ed6?#kLE8Y

后续

1.忘记后台管理员密码的解决方法

假如不小心忘记了Cardinal的管理员密码,或者登入不了,可以删除创建的cardinal数据库,然后重新建立一个cardinal数据库,这样就可以重新设置管理员账号。

2.更改数据库密码、比赛开始和结束的时间

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.未开启数据库导致报错

在这里插入图片描述

一个awd攻防比赛的裁判平台。 版本:beta v2.0 开发语言:python3 + django 平台分为两个部分 裁判机 靶机 通过特定接口,来实现靶机flag与服务器的通信 搭建流程 裁判机 安装所需环境 裁判机:python3+django 全局搜索woshiguanliyuan,并修改为随机字符串,此处为管理平台地址 /untitled/urls.py path('woshiguanliyuan/',views.admin,name='admin'), path('woshiguanliyuan/table/',views.admin_table,name='admin_table'), /app/views.py if 'woshiguanliyuan' not in request.META['HTTP_REFERER']: 第31和47换为你的目录 列:("/var/www/awd_platform/app/qwe.txt","a") 修改app/management/commands/init.py,添加用户 #['用户名','用户靶机token','用户靶机token'] user=[ ['123456','FF9C92C7SDFABB71566F73422C','FF9C92C7SDFABB71566F73422C'], ['aaabbb','311F8A54SV9K6B5FF4EAB20536','311F8A54SV9K6B5FF4EAB20536'] ] 修改/app/views.py第行d89f33b18ba2a74cd38499e587cb9dcd为靶机中设置的admin_token值的md5 if('d89f33b18ba2a74cd38499e587cb9dcd'==hl.hexdigest()): 运行 python3 manage.py init python3 manage.py manage.py runserver --insecure 靶机 安装所需环境 靶机:python+requests 修改send_flag.py参数,并将其放入靶机,设权限700。 靶机 sudo python send_flag.py。 靶机生成flag脚本,send_flag.py import requests import time import random import string import hashlib token='woshiwuxudong' # 红队 baji='311F8A54SV9K6B5FF4EAB20536' def getFlag(): #return ''.join(random.sample(string.ascii_letters + string.digits, 48)) m = hashlib.md5(''.join(random.sample(string.ascii_letters + string.digits, 48)).encode(encoding="utf-8")).hexdigest() return m while(1): f=open('/flag','w') flag=getFlag() f.write(flag) data={ 'flag':flag, 'token':token, 'baji':baji, } r=requests.post('http://127.0.0.1/caipanflag/',data=data) print(r.text) f.close() time.sleep(300) 重要须知 更新作者基础上: 1.增加flag验证一次性失效性,使得每个用户都并且仅可以提交一次flag 2.增加排名情况 3.flag改为MD5 4.增加丢失flag一轮扣100分
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值