All Projects → google → Ctfscoreboard

google / Ctfscoreboard

Licence: apache-2.0
Scoreboard for Capture The Flag competitions.

Programming Languages

python
139335 projects - #7 most used programming language

Labels

Projects that are alternatives of or similar to Ctfscoreboard

Hackerone Lessons
Transcribed video lessons of HackerOne to pdf's
Stars: ✭ 101 (-31.76%)
Mutual labels:  ctf
Karkinos
Penetration Testing and Hacking CTF's Swiss Army Knife with: Reverse Shell Handling - Encoding/Decoding - Encryption/Decryption - Cracking Hashes / Hashing
Stars: ✭ 115 (-22.3%)
Mutual labels:  ctf
Lctf2018
Source code, writeups and exps in LCTF2018.
Stars: ✭ 130 (-12.16%)
Mutual labels:  ctf
Ctf
Ctf solutions from p4 team
Stars: ✭ 1,395 (+842.57%)
Mutual labels:  ctf
Appjaillauncher
CTF Challenge Framework for Windows 8 and above
Stars: ✭ 115 (-22.3%)
Mutual labels:  ctf
Search Libc
Web wrapper of niklasb/libc-database
Stars: ✭ 124 (-16.22%)
Mutual labels:  ctf
Ctf Game Challenges
A curated list of Game Challenges from various CTFs
Stars: ✭ 97 (-34.46%)
Mutual labels:  ctf
Glibc All In One
🎁A convenient glibc binary and debug file downloader and source code auto builder
Stars: ✭ 145 (-2.03%)
Mutual labels:  ctf
Web Ctf Cheatsheet
Web CTF CheatSheet 🐈
Stars: ✭ 1,726 (+1066.22%)
Mutual labels:  ctf
Jwtxploiter
A tool to test security of json web token
Stars: ✭ 130 (-12.16%)
Mutual labels:  ctf
Gitlab rce
RCE for old gitlab version <= 11.4.7 & 12.4.0-12.8.1 and LFI for old gitlab versions 10.4 - 12.8.1
Stars: ✭ 104 (-29.73%)
Mutual labels:  ctf
Reversing List
Reversing list
Stars: ✭ 106 (-28.38%)
Mutual labels:  ctf
Awesome Hacking Resources
A collection of hacking / penetration testing resources to make you better!
Stars: ✭ 11,466 (+7647.3%)
Mutual labels:  ctf
Ctf Writeups
Writeups of Capture The Flag Competitions
Stars: ✭ 101 (-31.76%)
Mutual labels:  ctf
Stegbrute
Fast Steganography bruteforce tool written in Rust useful for CTF's
Stars: ✭ 134 (-9.46%)
Mutual labels:  ctf
Ssrfmap
Automatic SSRF fuzzer and exploitation tool
Stars: ✭ 1,344 (+808.11%)
Mutual labels:  ctf
Destructivefarm
📢 🔒 Exploit farm for attack-defense CTF competitions
Stars: ✭ 122 (-17.57%)
Mutual labels:  ctf
Pwn Env Init
CTF PWN 做题环境一键搭建脚本
Stars: ✭ 147 (-0.68%)
Mutual labels:  ctf
Print My Shell
Python script wrote to automate the process of generating various reverse shells.
Stars: ✭ 140 (-5.41%)
Mutual labels:  ctf
Ancypwn
Script to setup pwn environment for CTF with Docker
Stars: ✭ 126 (-14.86%)
Mutual labels:  ctf

CTF Scoreboard

This is a basic CTF Scoreboard, with support for teams or individual competitors, and a handful of other features.

Copyright 2020 Google LLC. This is not an official Google product.

Author: Please see the AUTHORS file.

This is a version 2.x branch. We've eliminated categories, in favor of tagging challenges. This simplifies the codebase significantly, and is a better fit since so many challenges border on more than one category. However, this branch is not compatible with databases from 1.x. If you need that, check out the 1.x branch, which will only be getting security & bug fixes.

Installation

  1. Install Python with PIP and setuptools. If you'd like to use a virtualenv, set one up and activate it now. Please note that only Python 3.6+ is officially supported at the present time, but it should still work on Python 2.7.

  2. Install the dependencies: pip install -r requirements.txt

  3. Install a database library. For MySQL, consider PyMySQL. For Postgres, use psycopg2. (Others may work; untested.)

  4. Write a config.py for your relevant installation. An example is provided in config.example.py.

     SQLALCHEMY_DATABASE_URI = 'mysql://username:[email protected]/db'
     #SQLALCHEMY_DATABASE_URI = 'postgresql+psycopg2://username:[email protected]/db'
     SECRET_KEY = 'Some Random Value For Session Keys'
     TEAM_SECRET_KEY = 'Another Random Value For Team Invite Codes'
     TITLE = 'FakeCTF'
     TEAMS = True
     ATTACHMENT_DIR = 'attachments'
     LOGIN_METHOD = 'local'  # or appengine
    

If you are using plaintext HTTP to run your scoreboard, you will need to add the following to your config.py, so that cookies will work:

    SESSION_COOKIE_SECURE = False

If you are developing the scoreboard, the following settings may be useful for debugging purposes. Not useful for production usage, however.

    COUNT_QUERIES = True
    SQLALCHEMY_ECHO = True
  1. Create the database:

     python main.py createdb
    
  2. Set up your favorite python application server, optionally behind a webserver. You'll want to use main.app as your WSGI handler. Tested with uwsgi + nginx. Not tested with anything else, let me know if you have success. Sample configs are in doc/.

  3. Register a user. The first user registed is automatically made an admin. You probably want to register your user before your players get access.

  4. Have fun! Maybe set up some challenges. Players might like that more.

Installation using Docker

  1. Navigate to the folder where the Dockerfile is located.

  2. Run the command below to build a docker image for the scoreboard and tag it as "scoreboard".

    docker build -t "scoreboard" .
    
  3. Run the command below to create the docker container.

    docker create -p 80:80 scoreboard
    
  4. Find the name of the container you created for the scoreboard.

    docker container ls -a
    
  5. Run the command below to start the docker container for the scoreboard.

    docker start "container_name"
    

Options

SCORING: Set to 'progressive' to enable a scoring system where the total points for each challenge are divided amongst all the teams that solve that challenge. This rewards teams that solve infrequently solved (hard or obscure) challenges.

TITLE: Scoreboard page titles.

TEAMS: True if teams should be used, False for each player on their own team.

SQLALCHEMY_DATABASE_URI: A SQLAlchemy database URI string.

LOGIN_METHOD: Supports 'local'

Development

Build Status codecov

Use hooks

ln -s ../../.hooks/pre-commit.sh .git/hooks/pre-commit

Test Cases

  • Setup database
  • Create user, verify admin
  • Create challenge
    • With, without attachment
  • Edit challenges
    • Add attachment
    • Delete attachment
  • Download backup
  • Restore backup
  • Create 2nd user, verify not admin
    • Solve challenge
    • Download attachment

Thanks

This project stands on the shoulders of giants. A big thanks to the following projects used to build this:

And many more indirect dependencies.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].