Dit is een korte “writeup” van de jotihack2023.
Een jaar te laat, maar wellicht alsnog leuk om te lezen.
Step 1: Morse
In de eerste opdracht krijg je morse te horen, dit is makkelijk te decoderen via beschikbare tools, zoals bijvoorbeeld:
https://morsecode.world/international/decoder/audio-decoder-adaptive.html
Dit brengt je bij de volgende URL: https://step1.jotihack.com/
Stap 2: Versleuteld
Hier kijgen we een hint in de vorm van een plaatje van Ceasar en een sleutel, dit verwijst uiteraard naar Ceasar Encryptie, een veel gebruikte methode in o.a. geocaches. Hierbij worden alle letters van het alfabet “verschoven”. Dus bijvoorbeeld:
A==D
B==E
C==F
D==G
De bekenste variant van deze methode is ROT-13 (alle letters schuiven 13 vakjes op.)
Hiermee krijg je met de input: /9n782q40768ro9007786n032nm7911mm
De volgende uitkomst: /9a782d40768eb9007786a032az7911zz
Stap 3: Inspecteren
Het enige wat we zien bij deze stap is een plaatje van een vergrootglas. Het openen van de broncode geeft al iets meer informatie:
<!--
Volgende stap: dig TXT afbeelding
Onthouden: wachtwoord = B!lb0
Hint: DNS
-->
Het openen van de broncode van de pagina is altijd een goed idee om extra hints te vinden.
We doen een dig op de hostname van afbeelding:
% dig txt inspect-element.jotihack.com
; <<>> DiG 9.10.6 <<>> txt inspect-element.jotihack.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29658
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;inspect-element.jotihack.com. IN TXT
;; ANSWER SECTION:
inspect-element.jotihack.com. 60 IN TXT "https://jotihack.com/supersecret"
;; Query time: 60 msec
;; SERVER: 172.16.252.211#53(172.16.252.211)
;; WHEN: Thu Oct 24 12:40:27 CEST 2024
;; MSG SIZE rcvd: 102
Stap 4: Diep van binnen
Weer een pagina met een plaatje, dit keer een plaatje van de Corona Lisa. De broncode van de pagina geeft in dit geval geen extra informatie. Ook het uitlezen van de exif informatie helpt dit keer niet. Een veel gebruikte tool bij het bekijken van binary bestanden is strings. Deze tool onttrekt alle tekst uit een binair bestand.
We downloaden het plaatje en runnen het strings commando:
% strings supersecret.jpeg | tail
V[',
=qi:F
P_55
c@>`
zWPY
I?Oj
ceg!
<nh_<
mXw&
https://corona-lisa.jotihack.com
Stap 5: Poortwachter
Het enige wat we op deze pagina zien is :10293.\
:getal is een veelgebruikte notatie om poortnummers op te geven. We connecten naar de jotihack website op de genoemde poort:
Stap 6: Server
Na het verbinden naar de website op de specifieke poort zien we het volgende:
\
De tekst geeft al een hint wat te doen:
$ less /instructions.txt
JOTI Terminal help
Commands available:
* ls = List all files in your current directory
* less {file}= Show file contents
* cd {directory} = Move directory
* su {password} = Log in as Administrator
* whoami = Shows which user is currently logged in
* compare {file1} {file2} = Compare 2 files
telnet is not available in this terminal but is required for the puzzle
Na wat proberen komen we er achter dat we eerst admin moeten worden:
$ su password
Ongeldig wachtwoord. Specificeer het als volgt "su wachtwoord". Tip: Je bent er al langs gekomen
Hier wordt een hint gegeven dat we het wachtwoord al zouden moeten hebben, het gaat hier uit het wachtwoord wat we in stap 3 moesten onthouden.
$ su B!lb0
_ __ __ __ _ _ __ __
| | /| / /__ / /______ __ _ ___ ___ ____/ /_ _ (_)__ (_)__ / /________ _/ /____ ____
| |/ |/ / -_) / __/ _ \/ ' \/ -_) / _ `/ _ / ' \/ / _ \/ (_-</ __/ __/ _ `/ __/ _ \/ __/
|__/|__/\__/_/\__/\___/_/_/_/\__/ \_,_/\_,_/_/_/_/_/_//_/_/___/\__/_/ \_,_/\__/\___/_/
Stap 7: Goudmijn
Na wat rondneuzen in de /User dir komen we in de homedir van Thorin.
/Users/Thorin/
Hier vinden we een bestand gold.txt met de volgende inhoud:
/Users/Thorin/ $ less gold.txt
I have found myself in a strange land. A land which looks like a terminal. After many
long hours walking around I have found a mysterious gold pile. There are a lof of treasures there, but only 1 of
them is actually real, but even then, it seems to be secured. The fake ones seems to look different, every time I
take a look at them. The only real coin has some scribbling on it, and a scroll next to it that says its very base-ic,
64 times.
Na wat zoeken komen we in de volgende dir uit: /var/local/goldpile/
Hierin staan een heleboel bestanden die steeds van inhoud wisselen, te controleren door less goldcoin##.txt twee keer achter elkaar te bekijken, als de inhoud wisselt is het niet het goede bestand.
Na flink zoeken komen we op goldcoin43.txt uit, de inhoud van dit bestand blijft hetzelfde. am90aWhhY2suY29tIDQz
De tekst van Thorin geeft een hint dat het hier om een base64 encoded string gaat. Deze zijn makkelijk te decoden met bijv een online tool: https://www.base64decode.org/
De decoded informatie is: jotihack.com 43
In stap6 hadden we al een hint gekregen dat we telnet nodig zouden hebben om verder te komen, de notatie zoals die uit de base64 kwam kun je direct in telnet gooien: telnet jotihack.com 43
Stap 8: Spieken
We hebben met telnet verbonden:
% telnet jotihack.com 43
Trying 136.144.205.238...
Connected to jotihack.com.
Escape character is '^]'.
.passwd joti:jota
Challenge 2023 - Hacking dots
Please enter your credentials to continue.
state=unauthenticated;
Username:
Username en password worden in gegeven.
Na het inloggen krijgen we de authenticated state. Helaas is dat niet voldoende om iets zinnigs te kunnen:
state=authenticated;
Authenticated
help
state=authenticated;
Your state is not sufficient enough
Als we het commando state geven, krijgen we een lijstje terug met de mogelijke states.
Met state=elevated maken we onszelf een beheerder. Nu kunnen we het help commando gebruiken voor meer info:
state=elevated;
Your privileges have now been elevated
help
state=elevated;
Welcome to the JOTI Challenge data environment
Commands available:
- help : Show available commands
- state : List all available user states
- state=$state : Change state to specified value
- file $file : Show contents of a file
- list : List all available files
We kijken welke bestanden er beschikbaar zijn:
list
state=elevated;
Files available
budget.csv
answers.txt
thema.pdf
We openen answers.txt\
file answers.txt
state=elevated;
Only normal users can view files
Ok, alleen normale gebruikers mogen bestanden openen. We gebruiken state= om onszelf weer een user te maken.
state=authenticated;
Authenticated
file answers.txt
state=authenticated;
1. Morse - step1.jotihack.com
2. ROT13 - step1.jotihack.com/9a782d40768eb9007786a032az7911zz
3. DIG DNS - jotihack.com/supersecret
4. Super Secret Corona Lisa - corona-lisa.jotihack.com
5. Poortwachter - corona-lisa.jotihack.com:10293
6. SU - B!lb0
7. Thorin Gold - telnet jotihack.com 43
8. TELNET - answers.txt
9. Connecting the dots - jotihack.com/666cfce95597723d976bc5e8fef06db9351ea375/JOTIHACK
10. Final code - info@jota-joti.scouting.nl
Stap 9: Coördinaten
Dit is de moeilijkste stap van dit jaar, we krijgen een filmpje te zien waarin uitgelegd wordt dat we de coördinaten moeten zoeken, waar de jotihack server te vinden is. We beginnen met het opzoeken op welk IP adres de server draait.
% host jotihack.com
jotihack.com has address 136.144.205.238
jotihack.com mail is handled by 10 jotihack.com.
Vervolgens zoeken we uit van wie dat IP adres is:
% whois 136.144.205.238
# whois.ripe.net
inetnum: 136.144.205.0 - 136.144.205.255
netname: TRANSIP-NL-VPS-POD0-RTM0-CUSTOMERS
descr:
country: NL
admin-c: IPRO1-RIPE
tech-c: IPRO1-RIPE
status: LEGACY
role: TransIP B.V. Admin
address: Vondellaan 47
address: 2332 AA Leiden
address: NL
remarks: -------------------------------------------------------
remarks: Network abuse reports: abuse@transip.nl
remarks: NOC and contact details: https://www.transip.nl/contact/
remarks: -------------------------------------------------------
phone: +31 71 524 1919
abuse-mailbox: abuse@transip.nl
admin-c: SJ7309-RIPE
tech-c: SJ7309-RIPE
nic-hdl: IPRO1-RIPE
mnt-by: TRANSIP-MNT
created: 2003-05-10T09:33:07Z
last-modified: 2023-09-07T09:15:01Z
source: RIPE # Filtered
% Information related to '136.144.192.0/18AS20857'
route: 136.144.192.0/18
descr: TransIP
origin: AS20857
mnt-by: TRANSIP-MNT
created: 2024-04-02T10:13:38Z
last-modified: 2024-04-02T10:14:12Z
source: RIPE
% This query was served by the RIPE Database Query Service version 1.114 (DEXTER)
Ik heb de output wat ingekort om het nog leesbaar te houden, we zien hier wel een adres in staan, maar dit is het adres van het hoofdkantoor van de hoster, niet het adres waar de server daadwerkelijk staat.
Wel zien we in de output een netname staan, dit geeft een goede hint naar waar de server staat.
netname: TRANSIP-NL-VPS-POD0-RTM0-CUSTOMERS
Vervolgens zoeken we op TRANSIP + RTM0 om er achter te komen waar dit datacenter staat. We komen op de volgende pagina: https://www.transip.nl/knowledgebase/990-wat-is-een-availability-zone
Hieruit blijkt dat RTM0 in Alblasserdam is. Uit een korte zoektocht blijkt dat er maar 2 DC’s zijn in Alblasserdam en dat deze naast elkaar liggen, zo dicht bij elkaar dat als je een pin zet in google om het coordinaat te bepalen gecombineerd met dat we maar 3 cijfers achter de komma nodig hebben je op de juiste URL uitkomt (na afronden)

De URL is dan: https://jotihack.com/51.846,4.679
Stap 10: Email
In de laatste stap hoef je alleen wat info te mailen aan de organisatie om in de Hall of Fame te komen (dat is inmiddels niet meer mogelijk)