- TLDR - where do I start
- What is this?
- Cool, where do I sign up?
- My
git
workshop â - Prerequisites
- The game server đš
- Rules
- Cool, so where do I begin?
- Hall of Fame đ
- The challenge is open source
TLDR - where do I start
Click right here to start. Good luck!
What is this?
A Capture-The-Flag challenge (what’s that?), aimed at intermediate git
users, that revolves around git
. You advance in the challenge by using git
commands to get the flag that unlocks the next stage.
Cool, where do I sign up?
đ The challenge is totally free and open-source! No signup, payment, or bla-bla required. I do recommend contacting me if you plan to try the challenge.
My git
workshop â
This CTF is a part of a git
workshop I’ve conducted multiple times. Some information about the workshop:
- â Takes around 3 hours.
- đŠ Is comprised of:
- đšâđ« An hour-long active lecture on
git
internals. The lecture focuses on understanding HOW git works. The goal of the session is to give participantes the self efficacy to solve problems and use advanced features. - đ© The challenge itself, with live support from me while participantes are solving the challenge.
- đšâđ« An hour-long active lecture on
- đč Can be conducted on-site or remote with Video Conferencing.
- đ Can be conducted in English or Hebrew.
- đ©âđđšâđ Works well with up to 10 participates at a time.
If you want the workshop for your organization, contact me and let’s set it up đ€
Prerequisites
Knowledge
- Basic
git
knowledge.- If you’re a little rusty/unsure, take a look at Git for humans.
- Basic understanding of
Python
- just need to be able to read it.
Installations
All you need to play the challenge is:
- A web browser, like Chrome.
- An SSH client.
- A terminal. It’s recommended to get a terminal that knows how to render unicode characters correctly - the challenge has some and without one you’ll want to (âŻÂ°âĄÂ°ïŒâŻïž” â»ââ»)
You probably have all three installed on your machine already.
Unsure about which terminal to use?
- đȘ If you’re on Windows, Windows Terminal , PuTTY and MobaXTerm are good alternatives that support Unicode.
- đ§ If you’re on Linux, most shells/terminals work with Unicode pretty well. The built-in Ubuntu terminal (Gnome) works. Kitty works as well.
If you want to check if your shell’s support for Unicode, try to curl
or
wget
a file that has unicode, and see what it prints. For example:
wget -O - http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-demo.txt
This should print something that looks like this towards the end:
Runes:
á»á áłáčá«áŠ áŠá«á á»á ááąáá á©áŸ áŠá«á ááȘáŸáá áŸá©á±áŠáčááȘá±ááąá áčáአáŠáȘ áčáá„á«
(Old English, which transcribed into Latin reads 'He cwaeth that he
bude thaem lande northweardum with tha Westsae.' and means 'He said
that he lived in the northern land near the Western Sea.')
Braille:
âĄâ â §â â Œâ â âĄâ â â â čâ °â ⥣â â
âĄâ â â â č â șâ â â â â â â â â â â â â â șâ â čâ Č âĄčâ »â â â â â â â łâ â
â ±â â â ⠧⠻ â â â łâ â čâ â â Č âĄčâ â â â â â â » â â â â â â â „â â â â â șâ â
â â â â â « â â č â čâ â â â »â â čâ â â â â čâ â â â »â
â â čâ â „â â â »â â â
â »â
â â â â čâ â Ąâ â â â â łâ â â »â Č âĄâ â â â â â â â â â â « â â â Č âĄâ â
âĄâ â â â â â â °â â â â â â șâ â â â â â â „â â â ⠰⥥â â â â â â â â â â â čâ čâ â â â
â Ąâ â â â â â â „â â â â â â â â â â â Č
âĄâ â âĄâ â â â č â șâ â â â â â â â â â â â â â â â €â â â â â Č
âĄâ â â ⥠â â â â °â â â â â â â â â â č â čâ â ⥠â
â â Șâ â â â â č
â Șâ â
â â Șâ â «â â â â ±â â â čâ »â â â â â â â â â „â â â â č â â â â â â â łâ
â â â â â â €â â â â â Č âĄ â â â Łâ â â â §â â â â Č â â â â â «â â â čâ â â â â â â
â â â â â â â â â â â â €â â â â â â â čâ â â â â â â â â â â â â â â â â â â â â â â »â č
â â čâ â â â â â â Č âĄâ „â â čâ â șâ â â â â â â â łâ â â â â â â â â
â â â â čâ â â â â â â â â â â â â č â „â â â â â â Șâ « â â â â â
â ©â â â â â â â â â â „â â â â â â â â čâ âĄâ łâ â â â čâ °â â â â â â â â â Č âĄčâ ł
â șâ â â â čâ »â â â â â â â »â â â â â â â â â â â â â â â â â â â â â â â â â â čâ â čâ â
âĄâ â â â č â șâ â â â â â â â â â â â â â â â €â â â â â Č
(The first couple of paragraphs of "A Christmas Carol" by Dickens)
Compact font selection example text:
ABCDEFGHIJKLMNOPQRSTUVWXYZ /0123456789
abcdefghijklmnopqrstuvwxyz £©”ĂĂĂĂĂéöÿ
âââââââ âąâŠâ°âąĆĆ ĆžĆŸâŹ ÎÎÎÎΩαÎČÎłÎŽÏ ĐĐĐĐĐабĐČгЎ
âââââ§âȘâĄâ âââšâ»âŁ ââŒââââșâșâ ïŹïżœââጠážÓ„áșÉËâŚÔ±á
Greetings in various languages:
Hello world, ÎÎ±Î»Î·ÎŒáœłÏα ÎșáœčÏΌΔ, ăłăłăăă
Box drawing alignment tests: â
â
ââââŠâââ ââââŹâââ ââââŹâââź ââââŹâââź ââââłâââ ââââ â· â» ââŻâ ââ°â â â±âČâ±âČâłâłâł
ââââšâââ ââââ§âââ ââââȘâââ âââââââ âââââââ ââââ â¶âŒâŽâșââžâ âŒâš âââ„ â âČâ±âČâ±âłâłâł
âââČ â±ââ ââ ââ ââ â ââ ââ â ââ ââ âż ââ ââ
ââ â” âč ââ·â ââžâ â â±âČâ±âČâłâłâł
â ⥠Ⳡâ⣠ââą â†ââŒââŒââŒâ€ ââ«ââââ«â€ âŁâżâŸâŒâŒâżâ« ââââ ââââ â ââ
â
â â â âČâ±âČâ±âłâłâł
âââ± âČââ ââ ââ ââ â ââ ââ â ââ ââ ✠ââ ââââââââ â â â â â â â
ââââ„âââ ââââ€âââ ââââȘâââ âââââââ âââââââ ââââââââ â â â â â â â
ââââ©âââ ââââŽâââ â°âââŽââ⯠â°âââŽââ⯠ââââ»âââ ââââââ ââââ â ââââ â âââââ
âââ
ââââââ
The game server đš
Here’s what you should expect to be installed on the CTF server you’re going to log in to.
- git đș
zsh
as the default shell. If you’re used tobash
- don’t worry, it’s very similar.- oh-my-zsh with git plugin.
- Some useful aliases (see the full list here):
gst
đgit status
gco
đgit checkout
gaa
đgit add --all
gcmsg
đgit commit -m
gp
đgit push
- Some useful aliases (see the full list here):
- fzf with default
zsh
bindings.Ctrl
+R
for fuzzy history matching.Ctrl
+T
for fuzzy file finding.
- All your favorite text editors â
vim
is configured as the default editor. You can change this by runninggit config --global core.editor "nano"
.emacs
.nano
.
Everything else you need to solve the CTF is installed on the machine: no need for any other external tools.
Rules
These rules are 100% based on the honor system đ€đœ
- Have fun đ we’re all here to learn.
- Don’t look at any of the open source code that builds the CTF. THIS WILL RUIN THE CHALLENGE FOR YOU.
- This challenge will not require brute-forcing to solve - the solution, once you got it, should be clear.
- You are most welcome to post write-ups and solutions - I 100% support you in doing so. Please mark the write-up clearly with a spoiler warning and try to avoid posting the actual flags (you can check out one of my writeups as an example).
- If you’re stuck and you need help, feel free to contact me! There’s no point in getting frustrated about this challenge - it should be fun and educational, and not too hard.
Cool, so where do I begin?
Hall of Fame đ
Read here to get a list of everyone who’s completed the challenge!
The challenge is open source
The challenge is open-source and is licensed under Creative Commons Attribution 4.0 International.
You can read about how the challenge was built in my development log blog post series. The challenge is made up of two (main) repositories:
- ShayNehmad/make-git-better-2 contains all the code required to build the challenge, the level checkers, the web content and the tests.
- ShayNehmad/make-git-better-levels contains the repo the players will clone and play against in the actual game.
If you want to contribute new levels you can refer to the README to get started. I recommend you open your own fork of the two repositores and talk to me about your plans before you start working.