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 uputstva.
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 offseta 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;Rzapamtite da prvih 0x08 odakle se čuva RIP pripada RBP-u.
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 --> Kompajlirajte bez zaštita &#xNAN;-o --> Izlaz &#xNAN;-g --> Sačuvajte kod (GDB će moći da ga vidi) echo 0 > /proc/sys/kernel/randomize_va_space --> Da deaktivirate ASLR u linuxu
Da kompajlirate shellcode: nasm -f elf assembly.asm --> vraća ".o" ld assembly.o -o shellcodeout --> Izvršni
-d --> Disasemblirajte izvršne sekcije (vidite opkode kompajliranog shellcode-a, pronađite ROP Gadgets, pronađite adresu funkcije...) &#xNAN;-Mintel --> Intel sintaksa &#xNAN;-t --> Tabela simbola &#xNAN;-D --> Disasemblirajte 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čna promenljiva (one su smeštene 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 je ASLR, onda se ovo menja svaki put) for i in `seq 0 20`; do ldd <Ejecutable> | grep libc; done --> Petlja da vidite 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)