Quickscope
Quickscope is a lightweight exploit thrower for attack-defense CTFs. This entails being able to communicate with a game interface (the tracker) and being able to launch exploits (the shooter).
pip install quickscope
How do I write an exploit?
Write an ordinary script that takes its input as the environment variables $HOST and $FLAG_ID.
You should hardcode the port used for the service, unless it is a very special variable service, in which case you should use $PORT.
chmod +x the script and make sure it has a shebang.
You should put the text x-service-name: servicename in your script somewhere so that the shooter knows to shoot it against the service servicename.
How do I launch an exploit?
quickscope --everyone --script my_exploit.py
Your exploit must contain the text x-service-name: <myservice>, where <myservice> is replaced with the name of the service to fire at.
How do I launch all my exploits forever?
quickscope --forever --corpus my_exploits
The difference between --everyone and --forever is that --everyone only shoots at each target for the current tick once.
How do I set up the tracker?
In order for quickscope (the shooter) to fire exploits, it needs to be able to connect to the tracker. The tracker is a python file that you should write for each CTF. Here's an example of it:
from quickscope.tracker import Tracker
class MyTracker(Tracker):
...
if __name__ == '__main__':
MyTracker.main()
You should implement the values marked as not implemented in tracker.py - this means FLAG_REGEX, get_status, submit_flags, and instrument_targets.
See fake/stub_tracker.py for an example implementation!
You can then directly run your script and it will start tracking the game.
If you're running the tracker in a non-hardcoded location, you will need to specify the --server argument to the shooter.
Metadata
Release files for quickscope 0.1.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| quickscope-0.1.7.tar.gz | 19.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| quickscope-0.1.7-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 40.2 kB
Release files / quickscope-0.1.7.tar.gz
| Download URL | quickscope-0.1.7.tar.gz |
|---|---|
| Size | 19.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d78a4e3c0748a71c55039b667bab6eec7e8a2619adf25718f2e70cef9b3090f7
|
|
BLAKE2b-256 checksum How to use checksums |
3cbc1d27809679b372328bd62d3d2fc901029d95884b59d95c02cd631cc0b01b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.4
|
Release files / quickscope-0.1.7-py3-none-any.whl
| Download URL | quickscope-0.1.7-py3-none-any.whl |
|---|---|
| Size | 20.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b02b96e67d3fc01a62126fb04ec22d03dbb8eab06de55ac5a92148ada8d11213
|
|
BLAKE2b-256 checksum How to use checksums |
ce7fa2c172ef584451ed4b17044fa969543a95bf645e1c9bbb59b883f84f0fdf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.4
|