VTF是由vlang搭建的ctf比赛平台, 相比其它平台, VTF具有以下特点:
- 编译到clang, 运行中拥有更高的效率;
- 直接使用自带的veb框架, 无需学习配置其他web框架;
- vlang拥有很方便的交叉编译能力, 可以轻松实现跨平台;
- 支持分屏操作, 在最小屏幕中也能正常使用;
- VTF开发将贯彻精简理念, 让用户能更加方便快速地投入使用;
- 由二次元姛战队维护, 二次元含量极高.
我们提供了源码与编译好的二进制文件以供使用.
./main -h
VTF v2.6.0-beta, CTF competition platform based on the V programming language.
Basic usages:
运行程序: main [Options]
运行程序(设置线程数): main [walkers] [Options]
Options:
-h, -help 显示编码的基本信息并退出.
-v, --version 显示版本号并退出.
-n, --nohup 守护进程并将日志输出到nohup.out文件(目前只支持在linux设置).
-p, --port [int] 设置端口号.
我们根据情况提供稳定版本用于快速部署服务, 可以通过以下方式直接获取预编译好的源码.
wget https://gitee.com/sakana_ctf/vtf/releases/tag/[版本号]/vtf-[对应版本类型]
./vtf-[对应版本类型]-[系统类型].zip
unzip vtf-[对应版本类型]-[系统类型].zip
cd vtf-[对应版本类型]-[系统类型]
./main
如果不了解也可以在发行版找到对应版本的文件下载并解压, 文件列表如下:
vtf
├── static
│ ├── css
│ ├── image
│ └── js
├── main
└── data.db
其中main是执行程序, 使用后data.db是数据库文件, 用于存储本次比赛的所有数据, 无需安装任何东西, 直接运行./main
可以得到VTF环境.
注意: 我们在新版本中禁止了nohup ./main &
的写法, 请采用./main -n
或./main --nohup
代替运行.
- sqlite3
详情参考vdoc, sakana战队从vlang的基础部署到使用有进行详细描写, 欢迎star.
使用之前需自行配置好sqlite环境, 不会太过麻烦:
Archlinux用户
sudo pacman -S sqlite
debian系linux用户
sudo apt install sqlite3 libsqlite3-dev
Fedora linux用户
sudo dnf -y install sqlite-devel
windows用户
- 从sqlite下载源zip文件
- 在
v/thirdparty
里面创建一个新的文件夹sqlite
- 将 zip 解压缩到该文件夹中
git用户可以直接使用代码:
git clone https://gitee.com/sakana_ctf/vtf.git
cd vtf
非git用户可以前往网站下载VTF.
编译程序只需要执行v main.v
, 但是在此之前我们推荐先完成/templates_split/build.v
文件的编译, 便于后续修改html模板:
v templates_split/build.v
编译并运行:
./templates_split/build ; v main.v ; ./main
以上代码先将templates_split
文件夹下的所有文件编译到templates
, 然后编译主程序, 最后运行主程序.
注意: 我们在新版本中禁止了nohup ./main &
的写法, 请采用./main -n
或./main --nohup
代替运行.
需求 | 当前情况 | 检验人 |
---|---|---|
版本号 | v2.6.0(实现基本的root权限分配和控制台) | sudopacman |
wiki版本号 | 当前跟随到v2.1.0, 待更新 | sudopacman |
数据测试 | 在1核1G的debian服务器进行100位用户注册测试, 已修复bug, 可正常使用 | sudopacman, Kengwang |
测试反馈 | 存在资源印用错误, 现已修复 | secret |
测试反馈 | 存在题目未格式化问题, 现暂用替代方案 | adwa |
firefox兼容问题 | 已最低限度适配 | sudopacman, VintageGameBoy |
说明书 | 已修正debian脚本错误 | H4nn4h |
线程设置 | 当前veb框架暂不支持 | |
登录安全 | 实现登录函数login_status , 其他路由已完善 |
sudopacman |
黑名单 | 禁止选手访问, 将移动在控制台设置 | |
题目 | 支持提交flag | sudopacman |
多flag设置 | 已实现 | sudopacman |
数据库 | 当前仅支持sqlite3数据库 | sudopacman |
错误显示 | 等待重写, 目前js上统一使用showinfo(${mess}) 显示错误 |
sudopacman |
排行榜 | 实现基本的图形表格, 待实现数据拉取功能 | sudopacman |
一血, 二血, 三血 | 将重新调整数据库 | |
中英文显示问题 | 在/templates_split/language 中添加语言, 脚本问题待解决 |
vtf是一项很大的工程, 我们欢迎大家参与提交维护, 我们提供相关资料方便大家进行学习:
vtf基于vlang, 以下可以参考sakana_ctf/vdoc进行学习
vtf编写符合wiki规范, 参与贡献前请对wiki进行了解.
提交代码的方式可以参考文章: 怎么在GitHub上为开源项目作贡献, 需要实现/维护的功能已经写在支持中, 也可以在issues上就功能问题进行提问.
VTF采用VY通用许可证, 以下是简易解释, 详情参考LICENSE:
在不进行个人补充的情况下VY许可证又称为VY通用许可证, 公开使用时只需标注社(VYCMa.png)标或声明源码来自VYCMa, 便可以免费修改和商用素材.
对于分发问题, 为方便更多人理解, 在VY许可证中有重新定义"版权转移"概念: 他人修改源码后可以闭源, 每个修改过的文件需放置版权说明, 如果要进行公开展示需标注作者个人的标志,若作者无特殊说明需标注社标(VYCMa.png)标或声明源码来自VYCMa.