Exploiting Tools
Last updated
Last updated
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Možete opcionalno koristiti ovu fork verziju GEF koja sadrži zanimljivije instrukcije.
Dok debagujete, GDB će imati malo drugačije adrese od onih koje koristi binarni fajl kada se izvršava. Možete učiniti da GDB ima iste adrese tako što ćete:
unset env LINES
unset env COLUMNS
set env _=<path>
Stavite apsolutnu putanju do binarnog fajla
Iskoristite binarni fajl koristeći istu apsolutnu putanju
PWD
i OLDPWD
moraju biti isti kada koristite GDB i kada eksploatišete binarni fajl
Kada imate staticki povezani binarni fajl, sve funkcije će pripadati binarnom fajlu (a ne spoljnim bibliotekama). U ovom slučaju će biti teško identifikovati tok koji binarni fajl prati da bi, na primer, zatražio korisnički unos.
Možete lako identifikovati ovaj tok tako što ćete pokrenuti binarni fajl sa gdb dok ne budete zatraženi za unos. Zatim, zaustavite ga sa CTRL+C i koristite bt
(backtrace) komandu da vidite pozvane funkcije:
gdbserver --multi 0.0.0.0:23947
(u IDA morate uneti apsolutnu putanju izvršne datoteke na Linux mašini i na Windows mašini)
Ghidra je veoma korisna za pronalaženje offset-a za buffer overflow zahvaljujući informacijama o poziciji lokalnih promenljivih.
Na primer, u primeru ispod, buffer flow u local_bc
ukazuje da vam je potreban offset od 0xbc
. Pored toga, ako je local_10
kanarska kolačić, to ukazuje da za prepisivanje iz local_bc
postoji offset od 0xac
.
&#xNAN;Remember da prvih 0x08 odakle se čuva RIP pripada RBP.
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 --> Kompajlirati bez zaštita &#xNAN;-o --> Izlaz &#xNAN;-g --> Sačuvaj kod (GDB će moći da ga vidi) echo 0 > /proc/sys/kernel/randomize_va_space --> Da deaktivira ASLR u linuxu
Da kompajlirate shellcode: nasm -f elf assembly.asm --> vraća ".o" ld assembly.o -o shellcodeout --> Izvršni
-d --> Disasemblirati izvršne sekcije (videti opkode kompajliranog shellcode-a, pronaći ROP Gadgets, pronaći adresu funkcije...) &#xNAN;-Mintel --> Intel sintaksa &#xNAN;-t --> Tabela simbola &#xNAN;-D --> Disasemblirati sve (adresa statične promenljive) &#xNAN;-s -j .dtors --> dtors sekcija &#xNAN;-s -j .got --> got sekcija -D -s -j .plt --> plt sekcija dekompilirana &#xNAN;-TR --> Relokacije ojdump -t --dynamic-relo ./exec | grep puts --> Adresa "puts" za modifikaciju u GOT objdump -D ./exec | grep "VAR_NAME" --> Adresa ili statičke promenljive (one se čuvaju u DATA sekciji).
Pokrenite ulimit -c unlimited
pre nego što pokrenete moj program
Pokrenite sudo sysctl -w kernel.core_pattern=/tmp/core-%e.%p.%h.%t
sudo gdb --core=<path/core> --quiet
ldd executable | grep libc.so.6 --> Adresa (ako ASLR, onda se ovo menja svaki put) for i in `seq 0 20`; do ldd <Ejecutable> | grep libc; done --> Petlja da vidi da li se adresa mnogo menja readelf -s /lib/i386-linux-gnu/libc.so.6 | grep system --> Offset "system" strings -a -t x /lib/i386-linux-gnu/libc.so.6 | grep /bin/sh --> Offset "/bin/sh"
strace executable --> Funkcije koje poziva izvršni rabin2 -i ejecutable --> Adresa svih funkcija
Unutar IDA fascikle možete pronaći binarne datoteke koje se mogu koristiti za debagovanje binarne datoteke unutar linuxa. Da biste to uradili, premestite binarnu datoteku linux_server
ili linux_server64
unutar linux servera i pokrenite je unutar fascikle koja sadrži binarnu datoteku:
Zatim, konfigurišite debager: Debugger (linux remote) --> Opcije procesa...:
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)