Sign inSign up

chainflag/solidctf

By chainflag

•Updated about 3 years ago

SolidCTF is an infrastructure solution that simplifies the build of Solidity CTF challenges.

Image
0

2.0K

chainflag/solidctf repository overview

⁠SolidCTF

Docker CI Docker size Latest tag License: MIT

SolidCTF is an infrastructure solution that simplifies the build of Solidity Capture the Flag (CTF) challenges. It provides the ability to CTF organizers to rapidly set up a playable Solidity CTF environment, freeing them up to concentrate on designing smart contracts for puzzles.

⁠Getting Started

⁠Quick Demo

Use the following command to run a quick demo:

docker run -it -p 20000:20000 -e WEB3_PROVIDER_URI=https://rpc.sepolia.org chainflag/solidctf
nc 127.0.0.1 20000
⁠Usage
  1. Clone the solidity-ctf-template⁠ using git clone [email protected]:chainflag/solidity-ctf-template.git command to create a new challenge project.
  2. Open the contract directory and code your challenge contract that contains the isSolved()⁠ to replace the example contract. For the multi-contract challenges, you can deploy them in a setup contract's constructor.
  3. Edit the challenge.yml⁠ to configure your challenge. See to the comments in this file for more details on how to configure it.
  4. Place your flag in the file flag.txt⁠ file and change the alloc address private key in the .env⁠ to your own.
  5. Run the docker-compose pull && docker-compose up -d command to start serving your challenge.

⁠Development

⁠Prerequisites

Before you start, make sure you have the following installed:

  • Docker
  • Python3
  • Required packages (pip install -r requirements.txt)
⁠Run in development mode
  1. Clone the repository
git clone [email protected]:chainflag/solidctf.git
git submodule update --init --recursive
  1. Generate protobuf code and run server
make protoc
export WEB3_PROVIDER_URI="your web3 provider"
make dev
  1. Open another terminal to run client
python client.py
⁠Format python source

To format the Python source code, you will need to install additional packages (pip install -r requirements-dev.txt) and run the following command:

make format

⁠Acknowledgements

Many thanks to JetBrains⁠ for providing their excellent tools and an open source license to support the development of this project.

⁠License

Distributed under the MIT License. See LICENSE for more information.

Tag summary

Content type

Image

Digest

sha256:226d09d0e…

Size

172.4 MB

Last updated

over 3 years ago

docker pull chainflag/solidctf