Ho un esercizio per sfruttare un servizio remoto dopo una breve finestra di dialogo con l'overflow del buffer dello stack. Ho scaricato un file binario su Ubuntu 14.04 locale e l'ho testato con gdb. Quello che faccio è creare un file in wxHexeditor con uno shellcode. Quindi copialo e incollalo nella finestra di dialogo (input per la funzione gets). Sia il terminale che un file utilizzano la stessa codifica (iso 8859-15). È possibile sovrascrivere con successo l'indirizzo ret con alcuni semplici simboli ASCII come A o B. Ma quando si tratta di uno shellcode reale o addirittura di una slitta NOP i miei simboli vengono sostituiti. Lo vedo in hexdump della pila. Questo problema genera diverse domande:
Come posso passare ancora questo problema usando l'input manuale dello shellcode o è possibile?
Il problema persisterà se scrivo uno script che invia shellcode come messaggio dopo la finestra di dialogo?
Come posso verificare se il problema di codifica è nell'impostazione del sistema ma non in binario che traduce l'input in utf8 o qualcosa del genere?
La risposta a una di queste domande sarebbe molto apprezzata.
Aggiornamento:
A questo punto si tratta principalmente di codifica. Ecco un esempio di cosa sta succedendo.
Questo è quello che ho in wxHexEditor. Vedi il finale:
Equestoèquellochehonellapiladopoilmioinput
Sarebbe perfetto con il termine AAAA (41 41 41 41).
È come quando si copia incolla tra diverse applicazioni e dati sfusi a causa della diversa codifica. Ma qui ho iso 8859-15 nel terminale (LANG = en ..) e lo stesso iso 8859-15 in wxHexEditor. Forse c'è da qualche parte utf8 in mezzo.