Exploiting Tools
Last updated
Last updated
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Jy kan opsioneel hierdie fork van GEF gebruik wat meer interessante instruksies bevat.
Terwyl jy debugg, sal GDB liggies verskillende adresse hê as die wat deur die binêre gebruik word wanneer dit uitgevoer word. Jy kan GDB dieselfde adresse laat hê deur:
unset env LINES
unset env COLUMNS
set env _=<path>
Plaas die absolute pad na die binêre
Exploit die binêre met dieselfde absolute roete
PWD
en OLDPWD
moet dieselfde wees wanneer jy GDB gebruik en wanneer jy die binêre exploiteer
Wanneer jy 'n statically linked binary het, sal al die funksies aan die binêre behoort (en nie aan eksterne biblioteke nie). In hierdie geval sal dit moeilik wees om die vloei wat die binêre volg om byvoorbeeld vir gebruikersinvoer te vra te identifiseer.
Jy kan hierdie vloei maklik identifiseer deur die binêre met gdb te hardloop totdat jy vir invoer gevra word. Stop dit dan met CTRL+C en gebruik die bt
(backtrace) opdrag om die funksies wat aangeroep is te sien:
gdbserver --multi 0.0.0.0:23947
(in IDA moet jy die absolute pad van die uitvoerbare lêer in die Linux masjien en in die Windows masjien invul)
Ghidra is baie nuttig om die offset vir 'n buffer overflow te vind danksy die inligting oor die posisie van die plaaslike veranderlikes.
Byvoorbeeld, in die voorbeeld hieronder dui 'n buffer vloei in local_bc
aan dat jy 'n offset van 0xbc
nodig het. Boonop, as local_10
'n kanarie koekie is, dui dit aan dat om dit van local_bc
te oorskry daar 'n offset van 0xac
is.
&#xNAN;Remember dat die eerste 0x08 van waar die RIP gestoor word aan die RBP behoort.
Get elke opcode wat in die program uitgevoer word.
gcc -fno-stack-protector -D_FORTIFY_SOURCE=0 -z norelro -z execstack 1.2.c -o 1.2 --> Compileer sonder beskerming &#xNAN;-o --> Uitset &#xNAN;-g --> Stoor kode (GDB sal dit kan sien) echo 0 > /proc/sys/kernel/randomize_va_space --> Om die ASLR in linux te deaktiveer
Om 'n shellcode te compileer: nasm -f elf assembly.asm --> gee 'n ".o" ld assembly.o -o shellcodeout --> Uitvoerbaar
-d --> Disassemble uitvoerbare afdelings (sien opcodes van 'n gecompileerde shellcode, vind ROP Gadgets, vind funksie adres...) &#xNAN;-Mintel --> Intel sintaks &#xNAN;-t --> Simbolen tabel &#xNAN;-D --> Disassemble alles (adres van statiese veranderlike) &#xNAN;-s -j .dtors --> dtors afdeling &#xNAN;-s -j .got --> got afdeling -D -s -j .plt --> plt afdeling gedekompileer &#xNAN;-TR --> Herverplasing ojdump -t --dynamic-relo ./exec | grep puts --> Adres van "puts" om in GOT te wysig objdump -D ./exec | grep "VAR_NAME" --> Adres of 'n statiese veranderlike (daardie word in DATA afdeling gestoor).
Loop ulimit -c unlimited
voordat ek my program begin
Loop sudo sysctl -w kernel.core_pattern=/tmp/core-%e.%p.%h.%t
sudo gdb --core=<path/core> --quiet
ldd uitvoerbaar | grep libc.so.6 --> Adres (as ASLR, dan verander dit elke keer) for i in `seq 0 20`; do ldd <Ejecutable> | grep libc; done --> Loop om te sien of die adres baie verander readelf -s /lib/i386-linux-gnu/libc.so.6 | grep system --> Offset van "system" strings -a -t x /lib/i386-linux-gnu/libc.so.6 | grep /bin/sh --> Offset van "/bin/sh"
strace uitvoerbaar --> Funksies wat deur die uitvoerbare aangeroep word rabin2 -i ejecutable --> Adres van al die funksies
Binne die IDA-gids kan jy binaire vind wat gebruik kan word om 'n binêre binne 'n linux te foutopspoor. Om dit te doen, skuif die binêre linux_server
of linux_server64
binne die linux-bediener en voer dit uit binne die gids wat die binêre bevat:
Dan, konfigureer die debugger: Debugger (linux afstand) --> Proses opsies...:
Leer & oefen AWS Hacking:HackTricks Opleiding AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Opleiding GCP Red Team Expert (GRTE)