Web Based CTF Platform, multithreaded and powered by python3
Hosted Version : http://pyctf.fr/
VERSION : Beta 3.0
PyCTF is a CTF platform that allows you to add challenges and deploy them dynamicaly. The storage of the personnal information are secured, such as the password, that are hashed with a complex algorithm (sha256, multi-round, with complex salt). This platform supports one or more users, and can be personalized (style and code).
git clone [url]
cd PyCTF
sudo python3 main.py
(for the external access, you will have to setup an openvpn server)
You will have to run the app in screen if you want to deploy it in production:
sudo apt install screen
screen
sudo python3 main.py
Ctrl-A
Ctrl-D
screen -r (to get back into the screen session)
- Add a folder containing the challenge, with the dockerfile (in which you'll put one echo {{random}} to detach every docker id).
- Add a challenge with a category, an id and a flag in ./var/challs.txt
- Add the challenge in ./templates/instances.html There are no needs to restart the app, it will be reloaded automatically
rm -rf PyCTF
sudo docker system prune -a (Optional)
- Non privileged user Automation (to run the server as user)
- Automation of openvpn profiles
- Improvements on the admin panel (add/remove challs, remove users, reboot server, delete all non verified users)
- Users management
- Instances Management
- Points and ranking system
- Scoreboard
- Email verification
- Login/logout and register panel
- Stats and personalized graphs
- User Friendly interface
- Automatic network configuration
- External access to docker network
- Optimisation of the website
- Admin Panel
- Port representation (ranges and unique)
- IP Ban
Usefull Info:
- Informations are only stored in your computer.
- This project isn't GPDR compliant and must be used for personnal usage.
Back-End / Front-End / Code : Ph3nX
Report a Bug : Report
- Fork it (https://github.com/yourname/yourproject/fork)
- Create your feature branch (
git checkout -b feature/fooBar
) - Commit your changes (
git commit -am 'Add some fooBar'
) - Push to the branch (
git push origin feature/fooBar
) - Create a new Pull Request