
Hardware Hacking CTF hcon2026hwctf - RISCV Hazard3 (@Wren6991) Exploiting von @b1n4ri0 @antoniovazquezblanco & @therealdreg
Wenn du dich für Hardware-CTFs interessierst, hier ist die erste öffentliche Challenge vom HC0N CTF 2026 mit RISC-V RP2350 Exploitation-Challenges (Low Level)
Wir haben versucht, die Challenge nicht zu elitär oder schwierig zu gestalten, damit Hunderte von Konferenzteilnehmern eine Chance haben, die Challenges zu lösen. Ich hoffe, das ist uns gelungen.
Wenn du den CTF zu Hause ausführen möchtest, schnapp dir ein Raspberry Pi Pico 2, flashe diese Firmware und lies nicht die Write-ups! -> ctf.uf2
Hinweis für alle, die ein anderes Board (RP2350/RP2354...) als das des CTF verwenden:
Das CTF-PCB hat eine SMD-LED auf GPIO 25, du musst eine LED auf diesem GPIO haben

Wenn du diesen CTF beendet hast und er dir gefallen hat, hier ist ein weiterer ähnlicher mit anderen Challenges: https://github.com/therealdreg/ctfhardwarehackingcon2026
WARNUNG: Die folgenden Write-ups enthalten Spoiler für die Challenges. Wenn du sie selbst lösen möchtest, empfehlen wir, sie nicht zu lesen, bis du den CTF abgeschlossen hast.
Erster Gewinner: @mrexodia (Duncan Ogilvie) writeups/first_winner.md

Preis: okhi Hardware-Keylogger USB/PS2-Kit + CWP (Certified WifiChallenge Professional) https://github.com/therealdreg/okhi
Zweiter Gewinner: @M3RINOOOOO (Cristobal Merino Saez) writeups/second_winner.md

Preis: Pimoroni PGA2350, PICO2 WH, Pimoroni PICO PLUS 2W, PICO2 H, CWP (Certified WifiChallenge Professional)
Dritter Gewinner: @p4bl0vx (Pablo Moya Lopez) writeups/third_winner.md

Preis: Pimoroni PGA2350, PICO2 WH, Pimoroni PICO PLUS 2W, CWP (Certified WifiChallenge Professional).
Hier geben wir dir einige Hilfestellungen, um den Hardware-Hacking-CTF auf der HCON 2026 einfacher zu machen.

Linux als Host sollte deine erste Wahl sein ;-), Debugging funktioniert besser.
TeraTerm: Setup -> Terminal -> Transmit: CR+LF & [x] Local echo

Andere:
cutecom:``` sudo apt-get update sudo apt-get install cutecom
# WARNUNG
Eine der Herausforderungen erfordert Hardware-Debugging. Wenn du die Herausforderung von zu Hause aus durchführst (ohne ein Teammitglied, das ein anderes Board hat), musst du zur Lösung dieser Herausforderung zusätzlich diese beiden Artikel kaufen. (Wenn du sie nicht kaufst, kein Problem – aber du wirst diese spezielle Herausforderung nicht lösen können.)
- https://www.tiendatec.es/raspberry-pi-pico/2025-raspberry-pi-debug-probe-5056561803265.html
- https://www.tiendatec.es/raspberry-pi-pico/1979-cable-depuracion-pico-jtag-jst-sh-1-0-a-dupont-hembra-15cm-8472496024846.html
# Über die Skripte
Die in diesem Repository enthaltenen Werkzeuge wurden von @b1n4ri0 für die Community und speziell für die 2026 HCON Hardware Hacking Challenge entwickelt.
# Ausnutzen des RP2350 RISCV Hazard3 (@Wren6991) 3-Stufen-RV32IMACZb*-Prozessors mit Debug
RISCV Hazard3 ist ein 3-Stufen-RV32IMACZb*-Prozessor mit Debug-Unterstützung. Er wird im RP2350-Mikrocontroller verwendet, der auf dem HCON2026HWCTF-Board zu finden ist.
# Dumpen der RISCV Hazard3-Firmware mit picotool
Das Dumpen von Firmware von RP2350-Geräten mit `picotool` ist ein unkomplizierter Prozess. In diesem Abschnitt lernst du, wie du es effektiv machst.
Hinweis: `picotool` interagiert mit RP2350- (und RP2040-)Geräten nur, wenn sie sich im BOOTSEL-Modus befinden oder wenn die laufende Firmware USB-stdio-Unterstützung aus dem Pico SDK enthält.
## picotool bauen
Installiere die notwendigen Build-Werkzeuge und Bibliotheken über deinen bevorzugten Paketmanager.```bash
sudo apt-get update
sudo apt install build-essential pkg-config libusb-1.0-0-dev cmake -y
Erstellen Sie ein dediziertes Verzeichnis, um Ihre Tools organisiert zu halten. Dies stellt sicher, dass die in späteren Schritten verwendeten Pfade korrekt sind.```bash cd $HOME mkdir rptools cd rptools
Klone die Projekte `picotool` und `pico-sdk`, wir benötigen sowohl das Tool selbst als auch das SDK. Beachte, dass `picotool` das `pico-sdk` benötigt, um korrekt zu kompilieren.```bash
git clone https://github.com/raspberrypi/picotool.git
git clone https://github.com/raspberrypi/pico-sdk.git
cd picotool
Create the build directory and run CMake.
Important: We must use the -DPICO_SDK_PATH flag to tell CMake exactly where we downloaded the SDK in the previous step or we can set the PICO_SDK_PATH in the enviroment.
Erstelle das Build-Verzeichnis und führe CMake aus.
Wichtig: Wir müssen das -DPICO_SDK_PATH-Flag verwenden, um CMake genau mitzuteilen, wo wir das SDK im vorherigen Schritt heruntergeladen haben, oder wir können PICO_SDK_PATH in der Umgebung setzen.```bash
mkdir build
cd build
cmake -DPICO_SDK_PATH=$HOME/rptools/pico-sdk ..
sudo make install
Standardmäßig sind für den Zugriff auf USB-Geräte Root-Rechte erforderlich. Kopieren Sie die udev-Regeldatei, damit `picotool` ohne `sudo` ausgeführt werden kann.```bash
sudo cp ../udev/60-picotool.rules /etc/udev/rules.d/
Laden Sie die udev-Regeln neu (oder ziehen Sie das Gerät ab und stecken Sie es wieder ein) und prüfen Sie die Version mit picotool version, um sicherzustellen, dass alles funktioniert:```bash
$ ./picotool version
picotool v2.2.0-a4 (Linux, GNU-15.2.0, Release)
## Verwendung der vorgefertigten Binärdatei
Wenn Sie den Build-Prozess überspringen möchten, können Sie die vorkompilierte Binärdatei aus dem [offiziellen Repository](https://github.com/raspberrypi/pico-sdk-tools/releases) herunterladen.```bash
gunzip picotool-2.2.0-a4-x86_64-lin.tar.gz
tar -xf picotool-2.2.0-a4-x86_64-lin.tar
cd picotool
Das Ausführen von picotool version sollte wie erwartet funktionieren:```bash
$ ./picotool version
picotool v2.2.0-a4 (Linux, GNU-11.4.0, Release)
## BOOTSEL-Modus auf RP2350 aktivieren
Um Vorgänge wie das Auslesen der Firmware durchzuführen, benötigt `picotool` das Gerät im BOOTSEL-Modus. Allerdings kann `picotool` auch mit dem Gerät interagieren, wenn die aktuell ausgeführte Firmware USB-Stdio-Unterstützung aus dem Pico SDK enthält.
Im Folgenden nenne ich mehrere Möglichkeiten, diesen Modus zu aktivieren. Wähle diejenige, die für deinen Fall am besten geeignet erscheint, oder einfach die, die für dich funktioniert.
Wenn dein Board **nicht im BOOTSEL-Modus ist**, aber die USB-Stdio-Unterstützung enthält**,** wirst du bei der Ausführung von `picotool`-Befehlen eine Ausgabe wie diese sehen:```bash
$ ./picotool info
No accessible RP-series devices in BOOTSEL mode were found.
but: