Resolución de problemas con pwnable.kr 25 - otp. Límite de tamaño de archivo de Linux

imagen

En este artículo, resolveremos la 25a tarea desde el sitio pwnable.kr .

Información organizacional
Especialmente para aquellos que desean aprender algo nuevo y desarrollarse en cualquiera de las áreas de información y seguridad informática, escribiré y hablaré sobre las siguientes categorías:

  • PWN;
  • criptografía (criptografía);
  • tecnologías de red (Red);
  • inversa (ingeniería inversa);
  • esteganografía (Stegano);
  • búsqueda y explotación de vulnerabilidades WEB.

Además de esto, compartiré mi experiencia en informática forense, análisis de malware y firmware, ataques a redes inalámbricas y redes de área local, realización de pentests y escritura de exploits.

Para que pueda conocer nuevos artículos, software y otra información, creé un canal en Telegram y un grupo para discutir cualquier problema en el campo de ICD. Además, consideraré personalmente sus solicitudes personales, preguntas, sugerencias y recomendaciones personalmente y responderé a todos .

Toda la información se proporciona solo con fines educativos. El autor de este documento no tiene ninguna responsabilidad por los daños causados ​​a alguien como resultado del uso del conocimiento y los métodos obtenidos como resultado de estudiar este documento.

Solución de trabajo otp


Continuamos la segunda sección. Diré de inmediato que es más difícil que el primero, pero esta vez nos proporcionan el código fuente del programa. No olvide la discusión aquí (https://t.me/RalfHackerPublicChat) y aquí (https://t.me/RalfHackerChannel). Empecemos

Haga clic en el icono con la firma otp. Nos dan la dirección y el puerto para la conexión.

imagen

Nos conectamos y miramos alrededor en el servidor.

imagen

Una bandera que no podemos leer, un programa y su código fuente. Veamos la fuente.

imagen

Analicémoslo. El programa toma una contraseña como argumento.

imagen

A continuación, se almacenan 16 bytes aleatorios en la variable otp.

imagen

Se crea un archivo con un nombre aleatorio (los primeros 8 bytes de otp) en la carpeta tmp y se escriben 8 bytes aleatorios (los segundos 8 bytes de otp).

imagen

Por alguna razón, el archivo creado lee el valor y lo compara con la contraseña ingresada.

imagen

Aquí es donde está la vulnerabilidad. Consiste en el almacenamiento intermedio del número generado en un archivo. Podemos limitar el tamaño del archivo, por ejemplo, a 0, luego, al escribir y leer con la contraseña se comparará 0. Esto se puede hacer así.

# ulimit -f 0 

imagen

Ahora ejecuta el programa.

imagen

Recibimos un error. No importa, porque puede procesarse usando la misma python.

 python -c "import os, signal; signal.signal(signal.SIGXFSZ, signal.SIG_IGN); os.system('./otp 0')" 

imagen

Obtenemos la bandera y nuestros pulmones 100 puntos. Y continuamos: en el próximo artículo tocaremos en la Web. Puedes unirte a nosotros en Telegram .

Source: https://habr.com/ru/post/471042/


All Articles