¿Cómo explotar la llamada del sistema cuando se proporciona la ruta completa del binario dentro de la llamada?

0

Estaba trabajando en un desafío en el que tengo que explotar un programa de C para obtener privilegios elevados en un sistema Linux. Para completarlo, tengo que llamar a un programa /bin/test mientras el programa vulnerable se ejecuta con un nivel de privilegio elevado. El fragmento de código relevante se muestra a continuación.

Pude explotar otro programa que usó system("cat <some file>") sin ningún problema. En ese caso, creé un programa en C con el que ejecuté /bin/test , lo llamé cat y lo guardé en un directorio que luego agregué a la variable $PATH .

Sin embargo, en este caso no puedo seguir el enfoque anterior por dos razones diferentes.

  1. No puedo ubicar el binario para el comando export .
  2. No puedo crear una variable $PATH que llame a mi comando personalizado file ya que se llama a la ruta completa en el system() del programa que se va a explotar.
  3. También tenga en cuenta que el programa elimina el punto y coma y un par de caracteres especiales, lo que dificulta la adición de varios comandos en la llamada al sistema.
pregunta hax 10.10.2016 - 14:11
fuente

1 respuesta

2

He compilado el programa y puedo ejecutar el comando "id" al proporcionar

'id'

como arg en stdin. Parece que extrañaron el backtick como personaje prohibido. Quizás pueda crear un script sh que cree un usuario root ...

    
respondido por el kaidentity 10.10.2016 - 15:30
fuente

Lea otras preguntas en las etiquetas