Git Product home page Git Product logo

ctf_platform's Introduction

Sieberrsec CTF Platform 😃

Sieberrsec CTF platform. A Jeopardy CTF platform designed with various neat features to aid in training and learning. Written in ReactJS and NodeJS

Installation & Documentation 📘

The platform can be installed in a few easy steps using Docker. Simply check out installation.

Please check out the wiki for usage/API documentation!

Demo 💻

You can find a working copy of the platform here. Feel free to register a new account, or use one of the following pre-made accounts: Normal Account:

Username: user
Password: 123

Admin Account:

Username: root
Password: 123

Please exercise caution and do not use any personal emails/passwords/usernames/any other info

Features 🎆

  • "Categories" 🗄️ for better organization of challenges into different "events"
  • Sorting of challenges 🏷️ by their tags (Forensics, Pwn etc.)
  • Teams 👫 with individual members scoring
  • Dynamic Scoring 💯 for challenges
  • Live Scoreboard 🥇 that is relatively light on the server
  • Announcements 📢 with markdown support
  • Markdown supported Challenge Descriptions ✔️ that allow you to add code blocks with syntax highlighting and more
  • Writeup links 🔗 per challenge (along with the option to only release writeups after submitting the flag)
  • Challenge Creator Role 🧔 so as to allow challenge authors to submit challenges without having full admin access
  • Set Required Challenges 🔐 to unlock other challenges
  • Category Scoreboards 💯 to create scoreboards for different categories of users all in the same platform!
  • Email password reset & verification 📧 using any SMTP server
  • Easy Docker Deployment 📮 in a few steps
  • Links to each challenge so that individual challenges can be shared
  • Easy management of the platform via an integrated Admin Panel
    • Disable registration, change permissions, edit passwords etc.

Feel free to take a look at the screenshots below for a peek at what the platform can do!

Screenshots 🖼️

image

Challenges page. Includes "Categories" to better sort challenges into various events and more

In each category, challenges are automatically sorted according to the tags assigned to each challenge by default. You can also all the challenges in a category by switching to "Sort by Category" mode and sort them using various sort options such as in Ascending Amount of Points

Modal for a challenge

Scoreboard of the platform

Admin panel showing the list of challenges. Here you can create, edit and delete challenges.

Create a new challenge page

Profile page of a user

Home page with announcements

Challenge creation page for challenge authors without access to the admin panel

ctf_platform's People

Contributors

dependabot[bot] avatar hex27 avatar matthew5025 avatar sheepymeh avatar tkaixiang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

ctf_platform's Issues

Platform

Hey there.
I really love this platform and is something i really need!. I'm willing to pay as well if I have this version as is now and permanently. Any e-mail for contact? Thanks

Copy invite link not working

Application has a feature which teams can use to send invite link to other team member by clicking on "Copy Invite link" button. However, this feature is not working as expected.

Step to Reproduce:

  1. Click on "copy invite link" button and check that link is not getting copied.
    Ctf1

Required challenge cannot be removed

steps to reproduce:

  1. login to account with permissions >= 2
  2. create a challenge with a required challenge
  3. try to remove that requirement

bug source

In step 2, the frontend will fetch /v1/challenge/edit over here:

https://github.com/IRS-Cybersec/ctf_platform/blob/master/client/src/AdminPanel/adminChallengeEdit.js#L93-L111

When the value of an attribute is undefined, JSON.stringify will remove the attribute altogether.

https://github.com/IRS-Cybersec/ctf_platform/blob/master/api/api.js#L1022-L1025

The backend calls updateOne() with $set; because updateObj contains no requires attribute, the challenge requirement remains in the db

在使用docker安装时出现的问题

Step 4/10 : RUN npm ci --only=production
---> Running in c0a2aff4b53e
npm WARN old lockfile
npm WARN old lockfile The package-lock.json file was created with an old version of npm,
npm WARN old lockfile so supplemental metadata must be fetched from the registry.
npm WARN old lockfile
npm WARN old lockfile This is a one-time fix-up, please be patient...
npm WARN old lockfile
之后一直卡住不动

docker启动报错

failed to solve: executor failed running [/bin/sh -c npm ci --only=production]: exit code: 1
image
image

Unable to deploy fresh instance

Issue

This application fails to function when being deployed for the first time (ie MongoDB is empty)

The error is as follows

(node:15516) UnhandledPromiseRejectionWarning: MongoError: ns does not exist: ctf.challs
    at MessageStream.messageHandler (ctf_platform\api\node_modules\mongodb\lib\cmap\connection.js:272:20)
    at MessageStream.emit (events.js:375:28)
    at processIncomingData (ctf_platform\api\node_modules\mongodb\lib\cmap\message_stream.js:144:12)
    at MessageStream._write (ctf_platform\api\node_modules\mongodb\lib\cmap\message_stream.js:42:5)
    at writeOrBuffer (internal/streams/writable.js:358:12)
    at MessageStream.Writable.write (internal/streams/writable.js:303:10)
    at Socket.ondata (internal/streams/readable.js:726:22)
    at Socket.emit (events.js:375:28)
    at addChunk (internal/streams/readable.js:290:12)
    at readableAddChunk (internal/streams/readable.js:265:9)

The issue seems to be introduced in 3ebb595

The file startupChecks.js attempts to add the validator option to three collections on line 10-12.

Although the collections were created in mongDB.js, MongoDB only attempts to create the collection when a document is inserted.
As such, the collection is not created, and when startupChecks.js attempts to apply the validator option, the referenced collection does not exist and the application fails.

Solution

Apply the validator when creating the collection (aka in mongoDB.js rather than in the startupChecks.js)?

I'll open a PR if you think this is a valid solution

关于得分榜功能开发

作者您好,我对得分页面上有新的想法:

在同一页通过不同的category展示不同的category user 排行

目前只能选择单一category,展示单一排行,希望能增添至两个排行榜(数据展示自由度更高)。

Thx!!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.