Exploiting Tools
Last updated
Last updated
Lernen Sie & üben Sie AWS-Hacking: HackTricks Training AWS Red Team Expert (ARTE) Lernen Sie & üben Sie GCP-Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Sie könnten optional diese Gabel von GEF verwenden, die weitere interessante Anweisungen enthält.
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 ein
Das Binärprogramm mit dem gleichen absoluten Pfad ausnutzen
PWD
und OLDPWD
müssen gleich sein, wenn Sie GDB verwenden und das Binärprogramm ausnutzen
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:
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 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.
Erhalten Sie jede ausgeführte Opcode im Programm.
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
-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).
Führen Sie ulimit -c unlimited
aus, bevor Sie mein Programm starten
Führen Sie sudo sysctl -w kernel.core_pattern=/tmp/core-%e.%p.%h.%t
aus
sudo gdb --core=<path/core> --quiet
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
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...:
Lernen Sie & üben Sie AWS-Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen Sie & üben Sie GCP-Hacking: HackTricks Training GCP Red Team Expert (GRTE)