Exploiting Tools
Last updated
Last updated
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Sie können optional diesen Fork von GEF verwenden, der interessantere Anweisungen enthält.
Während des Debuggens wird GDB leicht unterschiedliche Adressen als die vom Binärprogramm verwendeten beim Ausführen haben. Sie können GDB die gleichen Adressen haben lassen, indem Sie:
unset env LINES
unset env COLUMNS
set env _=<path>
Geben Sie den absoluten Pfad zur Binärdatei ein
Exploitieren Sie die Binärdatei unter Verwendung des gleichen absoluten Pfades
PWD
und OLDPWD
müssen gleich sein, wenn Sie GDB verwenden und wenn Sie die Binärdatei ausnutzen
Wenn Sie eine statisch verlinkte Binärdatei haben, gehören alle Funktionen zur Binärdatei (und nicht zu externen Bibliotheken). In diesem Fall wird es schwierig sein, den Fluss zu identifizieren, dem die Binärdatei folgt, um beispielsweise nach Benutzereingaben zu fragen.
Sie können diesen Fluss leicht identifizieren, indem Sie die Binärdatei mit gdb ausführen, bis Sie nach Eingaben gefragt werden. Stoppen Sie dann mit CTRL+C und verwenden Sie den bt
(backtrace) Befehl, 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 der Linux-Maschine und auf der Windows-Maschine angeben)
Ghidra ist sehr nützlich, um den Offset für einen Buffer Overflow dank der Informationen über die Position der lokalen Variablen zu finden.
Zum Beispiel zeigt im folgenden Beispiel ein Buffer Overflow in local_bc
, dass Sie einen Offset von 0xbc
benötigen. Darüber hinaus, wenn local_10
ein Canary-Cookie ist, zeigt es an, dass zum Überschreiben von local_bc
ein Offset von 0xac
erforderlich ist.
&#xNAN;Remember, dass die ersten 0x08, von wo der RIP gespeichert wird, zu dem RBP gehören.
Get every opcode executed in the program.
gcc -fno-stack-protector -D_FORTIFY_SOURCE=0 -z norelro -z execstack 1.2.c -o 1.2 --> Kompilieren ohne Schutz &#xNAN;-o --> Ausgabe &#xNAN;-g --> Code speichern (GDB kann ihn sehen) echo 0 > /proc/sys/kernel/randomize_va_space --> Um das ASLR in Linux zu deaktivieren
Um einen Shellcode zu kompilieren: nasm -f elf assembly.asm --> gibt eine ".o" zurück ld assembly.o -o shellcodeout --> Ausführbar
-d --> Disassembliere ausführbare Abschnitte (siehe Opcodes eines kompilierten Shellcodes, finde ROP Gadgets, finde Funktionsadresse...) &#xNAN;-Mintel --> Intel Syntax &#xNAN;-t --> Symbol Tabelle &#xNAN;-D --> Disassembliere alles (Adresse der statischen Variablen) &#xNAN;-s -j .dtors --> dtors Abschnitt &#xNAN;-s -j .got --> got Abschnitt -D -s -j .plt --> plt Abschnitt dekompiliert &#xNAN;-TR --> Umsetzungen ojdump -t --dynamic-relo ./exec | grep puts --> Adresse von "puts" zur Modifikation in GOT objdump -D ./exec | grep "VAR_NAME" --> Adresse oder eine statische 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 (wenn ASLR, dann ändert sich dies jedes Mal) for i in `seq 0 20`; do ldd <Executable> | 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 von der ausführbaren Datei aufgerufen werden rabin2 -i ejecutable --> Adresse aller Funktionen
Im IDA-Ordner finden Sie Binärdateien, die verwendet werden können, um eine Binärdatei in einem Linux zu debuggen. Dazu verschieben Sie die Binärdatei linux_server
oder linux_server64
auf 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 & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)