Stavo lavorando su una sfida in cui devo sfruttare un programma C per ottenere privilegi elevati in un sistema Linux. Per completarlo, devo chiamare un programma /bin/test
mentre il programma vulnerabile è in esecuzione con un livello di privilegio elevato. Di seguito è riportato lo snippet di codice pertinente.
Sono riuscito a sfruttare un altro programma che ha utilizzato system("cat <some file>")
senza problemi. In quel caso ho creato un programma C con cui è stato eseguito /bin/test
, chiamato gatto e mantenuto in una directory che ho aggiunto successivamente alla variabile $PATH
.
Tuttavia in questo caso non sono in grado di seguire l'approccio di cui sopra per due diversi motivi.
- Non riesco a individuare il file binario per il comando
export
. - Non riesco a creare una variabile
$PATH
che chiamerà il mio comando personalizzatofile
mentre viene chiamato il percorso completo nellasystem()
del programma da sfruttare. - Si noti inoltre che il programma disinfetta il punto e virgola e un paio di caratteri speciali che rendono difficile l'aggiunta di più comandi nella chiamata di sistema.