Skip to content
/ CTFOJ Public

Lightweight CTF judge platform for capture-the-flag (CTF) clubs

License

Notifications You must be signed in to change notification settings

jdabtieu/CTFOJ

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CTFOJ

Build Codecov Report GitHub Release AGPL-3.0 License

CTFOJ is a open-source online judge to host capture-the-flag problems and contests. It is primarily designed for capture-the-flag clubs who would like to host unlimited contests and practice problems.

Features

  • Create practice problems
    • Editorials can be created any time showing solutions
    • Export problems for archival
  • Create contests
    • Contest problems support dynamic scoring
    • Contests have a live scoreboard that can be configured to be viewable by admins only or all competitors
    • CTFtime live scoreboard integration
    • Hints can be added to any problem
    • Mass notify users through email
  • Live Instancing
    • Create individual instances per team, for pwn and web problems
  • Create announcements
    • Announce anything you want, to all users of the site
  • Custom homepage
    • Add your own customized content to a homepage displayed to all anonymous users
  • Full Markdown support
  • User management
    • Remotely reset passwords
    • Ban users
    • Multiple roles and permission levels
    • Disqualify and hide users from contests
  • 2FA support
  • API access
  • Global and contest-specific leaderboard
  • Profile pages
  • + many more

Installation and Quickstart

See INSTALL.md.

Support

If you are encountering any issues, please check the repository Wiki first of the issues tab.
If you would like to open an issue about a feature request or bug report, please do so on the Issues tab.
Otherwise, email jdabtieu for other support.

Usage

If you have logged in with an administrator account, you will be able to manage the site through the "Admin Console" interface. This includes the ability to create practice problems, contests, and announcements. Additionally, you will be able to manage users and view submissions.

Contributing

Contributors are welcome. If you want to help, feel free to submit a pull request or open an issue. Additionally, please make sure to test your changes manually and using our test suite.

Notice a security vulnerability? Refer to SECURITY.md to determine what to do.

Code Style

We encourage you to follow the PEP 8 style guide for Python code, with a modification of 90 characters line length. However, longer lines may be used if breaking the line would reduce readability.

For non-Python code, please use 4 space tabs, limit your lines to under 100 characters, use descriptive variable names, and follow general good practices (unless it would reduce readability or performance).