Disclaimer: Im August 2026 fand die Qualifikation für das Finale von Deutschlands Bester Hacker statt, welches ich auf Platz 1 abschließen konnte. Nur zwei Teilnehmer waren in der Lage, alle Challenges zu lösen. Dieses Writeup wurde mit KI auf Basis meiner Notizen erstellt und kann Fehler enthalten, bei Fragen bitte direkt an mich wenden im DBH-Discord.
| Wettbewerb | Deutschlands Bester Hacker 2026 — Qualifikation |
| Kategorie | Misc |
| Punkte | 316 |
| Angriffsklasse | OSINTOpen Source IntelligenceGewinnung und Auswertung frei zugänglicher Informationen für Sicherheitsanalysen. / MetadatenMetadatenanalyseAuswertung beschreibender Zusatzdaten in Dateien, die Herkunft, Werkzeuge und Personen preisgeben. + Content Discovery + schwaches RSA |
Die Challenge
Alex Carter ist Softwareentwickler und Fotograf. Er ist aus der Öffentlichkeit verschwunden und hat verstreute Spuren seiner Arbeit hinterlassen. Irgendwo dazwischen hat er etwas versteckt.
Aufklärung
Die Challenge-Website ist eine einfache Portfolio-Seite mit den Seiten index.html,
about.html, blog.html, contact.html, social/github.html und social/twitter.html.
In jeder Seite stecken HTML-Kommentare mit Hinweisen:
| Seite | Kommentar |
|---|---|
| index.html | TODO: Remove old development files before final deployment. |
| about.html | Old username used during development: lostdev |
| contact.html | Website migration completed. Check old backup files before removing. |
| social/github.html | Main project: portfolio, Important file: projecthint.jpg |
| social/twitter.html | Backup information: Check document metadata. |
Die robots.txt liefert weitere Hinweise:
# I have nice Projects
# Disallow: /exifisathing/
# sitemap: /old/sitemap.xml
exifisathing zeigt unmissverständlich auf EXIF-Metadaten als Informationsquelle.
Die Schwachstelle
resume.pdf — die PDF-Metadaten enthalten in den Keywords:
flag_location=/hiddden/
crypto=id_rsa.pub
Das verrät das Zielverzeichnis /hiddden/ (mit drei d) und dass eine RSA-Public-Key-Datei
relevant ist.
projecthint.jpg — enthält einen JPEG-Kommentar:
wget me check me and find hidden places
Dazu EXIF-Daten: Artist=lostdev, Software=Photo Manager v1.4,
XMP Description=Mountain trip archive.
Das Verzeichnis /hiddden/ war per nginx mit 403 Forbidden blockiert. Ein Scan mit
Standardeinstellungen reichte nicht — entscheidend war ein rekursiver Scan mit erhöhter
Tiefe und erweiterten Dateiendungen:
feroxbuster \
--url <URL> \
--wordlist SecLists/Discovery/Web-Content/common.txt \
--depth 6 \
--extensions html,txt,pdf,jpg,png,json,xml,pub,key,zip,bak,old,pem,env,conf \
--status-codes 200 301 302 403
Neue Funde:
/assets/crypto— Verzeichnis mit verschlüsseltem Text/check— gibtLOCKEDzurück/unlock— gibtInvalid tokenzurück, erwartet also einen Token
Der Angriff
Im /assets/crypto-Verzeichnis lagen die verschlüsselte Nachricht und der Public Key:
Ciphertext: 2655eacc028dfa8924e8223e39fad4b3
-----BEGIN RSA PUBLIC KEY-----
MBgCEQCeyf5W0WFpCSE7+2NzKY7vAgMBAAE=
-----END RSA PUBLIC KEY-----
Der RSA-Key ist nur 128 Bit groß — trivial faktorisierbar:
n = 211066833613043640897216781334063189743
e = 65537
Faktorisiert:
p = 11514676378748110951
q = 18330244521903886393
Damit lässt sich d berechnen und der Ciphertext entschlüsseln:
phi = (p - 1) * (q - 1)
d = pow(e, -1, phi)
m = pow(c, d, n)
# Ergebnis: UNLOCK-7F3A9C2D
Der Token wird an den /unlock-Endpunkt übergeben:
/unlock?token=UNLOCK-7F3A9C2D → "Archive unlocked. Access granted."
Anschließend ist /hiddden/ mit dem Token als Parameter zugänglich:
/hiddden/?token=UNLOCK-7F3A9C2D
Die Flag
Im freigeschalteten Verzeichnis liegt unter anderem die flag.txt mit der Flag im Format
DBH{...}.
Was ich mitnehme
- Scanner-Defaults reichen nicht. feroxbuster scannt standardmäßig nur bis Tiefe 3.
Wichtige Pfade wie
/assets/cryptound/unlocktauchten erst bei Tiefe 6 auf. - Erweiterte Extensions nutzen.
.pubund.keysind in den meisten Scannern keine Standard-Endungen, waren hier aber entscheidend. - Metadaten sind eine eigene AngriffsflächeAttack SurfaceGesamtheit aller potenziell angreifbaren Einstiegspunkte eines Systems.. Die
robots.txtwies explizit auf EXIF hin, und die PDF-Keywords enthielten die zentralen Hinweise. Wer nur den sichtbaren Seiteninhalt liest, findet den Einstieg nicht. - Kleine RSA-Keys sind kein Schutz. Ein 128-Bit-Modulus fällt in Sekunden.