Exploiting Tools
Metasploit
Shellcodes
GDB
Installation
Parameter
Parameter
Anleitung
Sie könnten optional diese Gabel von GEF verwenden, die weitere interessante Anweisungen enthält.
Tricks
GDB gleiche Adressen
Beim Debuggen hat GDB etwas andere Adressen als die, die vom Binärprogramm verwendet werden, wenn es ausgeführt wird. Sie können GDB dazu bringen, die gleichen Adressen zu haben, indem Sie Folgendes tun:
unset env LINES
unset env COLUMNS
set env _=<Pfad>
Geben Sie den absoluten Pfad zum Binärprogramm einDas Binärprogramm mit dem gleichen absoluten Pfad ausnutzen
PWD
undOLDPWD
müssen gleich sein, wenn Sie GDB verwenden und das Binärprogramm ausnutzen
Backtrace, um aufgerufene Funktionen zu finden
Bei einem statisch verknüpften Binärprogramm gehören alle Funktionen zum Binärprogramm (und nicht zu externen Bibliotheken). In diesem Fall wird es schwierig sein, den Ablauf zu identifizieren, dem das Binärprogramm folgt, um beispielsweise Benutzereingaben anzufordern.
Sie können diesen Ablauf leicht identifizieren, indem Sie das Binärprogramm mit gdb ausführen, bis Sie nach einer Eingabe gefragt werden. Stoppen Sie es dann mit STRG+C und verwenden Sie den Befehl bt
(backtrace), um die aufgerufenen Funktionen zu sehen:
GDB-Server
gdbserver --multi 0.0.0.0:23947
(in IDA müssen Sie den absoluten Pfad der ausführbaren Datei auf dem Linux-Rechner und auf dem Windows-Rechner angeben)
Ghidra
Stack-Offset finden
Ghidra ist sehr nützlich, um den Offset für einen Pufferüberlauf zu finden, dank der Informationen über die Position der lokalen Variablen.
Zum Beispiel zeigt ein Pufferüberlauf in local_bc
im folgenden Beispiel an, dass Sie einen Offset von 0xbc
benötigen. Darüber hinaus zeigt ein möglicherweise als Canary-Cookie fungierendes local_10
an, dass zum Überschreiben von local_bc
ein Offset von 0xac
erforderlich ist.
Bedenken Sie, dass die ersten 0x08, in denen der RIP gespeichert ist, dem RBP gehören.
qtool
Erhalten Sie jede ausgeführte Opcode im Programm.
GCC
gcc -fno-stack-protector -D_FORTIFY_SOURCE=0 -z norelro -z execstack 1.2.c -o 1.2 --> Kompilieren ohne Schutzmaßnahmen -o --> Ausgabe -g --> Code speichern (GDB kann ihn sehen) echo 0 > /proc/sys/kernel/randomize_va_space --> ASLR in Linux deaktivieren
Um einen Shellcode zu kompilieren: nasm -f elf assembly.asm --> gibt eine ".o"-Datei zurück ld assembly.o -o shellcodeout --> Ausführbar
Objdump
-d --> Disassemblieren von ausführbaren Abschnitten (Opcode des kompilierten Shellcodes anzeigen, ROP-Gadgets finden, Adressen von Funktionen finden...) -Mintel --> Intel-Syntax -t --> Symboltabelle -D --> Alles disassemblieren (Adresse von statischen Variablen) -s -j .dtors --> dtors-Abschnitt -s -j .got --> got-Abschnitt -D -s -j .plt --> plt-Abschnitt dekompiliert -TR --> Relokationen ojdump -t --dynamic-relo ./exec | grep puts --> Adresse von "puts" zum Ändern in GOT objdump -D ./exec | grep "VAR_NAME" --> Adresse einer statischen Variable (diese werden im DATA-Abschnitt gespeichert).
Core-Dumps
Führen Sie
ulimit -c unlimited
aus, bevor Sie mein Programm startenFühren Sie
sudo sysctl -w kernel.core_pattern=/tmp/core-%e.%p.%h.%t
aussudo gdb --core=<path/core> --quiet
Mehr
ldd executable | grep libc.so.6 --> Adresse (bei ASLR ändert sich dies jedes Mal) for i in `seq 0 20`; do ldd <Ejecutable> | grep libc; done --> Schleife, um zu sehen, ob sich die Adresse stark ändert readelf -s /lib/i386-linux-gnu/libc.so.6 | grep system --> Offset von "system" strings -a -t x /lib/i386-linux-gnu/libc.so.6 | grep /bin/sh --> Offset von "/bin/sh"
strace executable --> Funktionen, die vom ausführbaren Programm aufgerufen werden rabin2 -i ejecutable --> Adresse aller Funktionen
Inmunity debugger
IDA
Debugging in Remote Linux
Innerhalb des IDA-Ordners finden Sie Binärdateien, die zum Debuggen eines Binärdatei in einem Linux verwendet werden können. Um dies zu tun, verschieben Sie die Binärdatei linux_server
oder linux_server64
in den Linux-Server und führen Sie sie im Ordner aus, der die Binärdatei enthält:
Dann konfigurieren Sie den Debugger: Debugger (Linux Remote) --> Prozessoptionen...:
Last updated