domingo, 4 de octubre de 2015

Bandit Level 20 → Level 21



Los datos de conexión para este nivel son:

- Host: bandit.labs.overthewire.org
- User: bandit20
- Pass: GbKksEFF4yrVs6il55v6gwY5aVje5f0j



La descripción es la siguiente:


Básicamente, nos está indicando que disponemos de un binario, con bit suid habilitado para el user bandit21



Al ejecutarlo sin ningún parámetro actual, nos indica que hará una conexión TCP a un puerto dado sobre localhost y que si éste recibe el password del level 20 de la otra conexión, el password del level 21 será mostrado.

El siguiente diagrama clarifica un poco todo esto:


Por tanto, hay que:
  1. Iniciar una nueva conexión SSH.
  2. Levantar un daemond que permanezca en modo 'listenign' y que al recibir una conexión, envíe el password del level 20:



Como se puede ver, netcat es la herramienta perfecta para hacer esto.

Levantado el daemon, tan solo queda volver a ejecutar suconnect argumentándole el puerto para poder resolver el level:




Con el fin de clarificar un poco todo, he editado el título de las terminales como:
  • CLIENT: Para el terminal que ejecuta suconnect.
  • SERVER: Para el terminal que ejecuta el daemond.


Esto es todo por ahora. Hasta la próxima entrada!

domingo, 27 de septiembre de 2015

Bandit Level 19 → Level 20



Los datos de conexión para este nivel son:

- Host: bandit.labs.overthewire.org
- User: bandit19
- Pass: IueksS7Ubh8G3DCwVzrTd8rAVOwq3M5x



La descripción es la siguiente:


Como se puede observar, en este caso nos está diciendo que debemos hacer uso de setuid. Esto ya fue comentado de pasada en este otro wargame.

La resolución de este level es muy sencilla y pasa por pasarle al binario bandit20-do como parámetro actual, un comando que nos permita visualizar el contenido del fichero bandit20:



Aunque no es del todo necesario, podemos ver a continuación, el desensamblado del binario:



Hasta el próximo level!

sábado, 19 de septiembre de 2015

Bandit Level 18 → Level 19



Los datos de conexión para este nivel son:

- Host: bandit.labs.overthewire.org
- User: bandit18
- Pass: kfBf3eYk5BPBRzwjqutbbfE887SVc5Yd


Este nuevo level introduce algo distinto a los anteriores. Si retomamos parte del texto del nivel anterior, vemos que nos avisa de algo:

NOTE: if you have solved this level and see ‘Byebye!’ when trying to log into bandit18, this is related to the next level, bandit19

De manera tal que si hacemos la conexión SSH, obtendremos el comentado Byebye!:



Veamos que pistas nos proporciona el enunciado de este level:


Todo parece indicar que el fichero .bashrc (fichero que se carga al iniciar una 'shell de login interactiva) ha sido modificado de tal manera que no nos proporcione un shell. Por tanto, lo que debemos hacer es forzar la conexión SSH argumentando la shell que deseamos usar de la siguiente manera:



El resto, es sencillo. Tan solo debemos leer el contenido del fichero 'readme'.

Esto es todo por el momento!



Resúmenes de "Gestión de Proyectos Informáticos". Grado en Ingeniería Informática de la UNED


El objetivo de esta asignatura es proporcionar los conocimientos y habilidades necesarios para llevar a cabo tareas de dirección y gestión de proyectos informáticos de manera organizada y sistemática, de forma que se obtengan productos con la calidad que demandan los clientes y usuarios.

Una asignatura con muchísimo temario que si no se planifica con mucha antelación, se corre el riesgo de no llegar a cubrirla al completo.

A continuación, anexo los enlaces con los resúmenes que he ido haciendo de cada uno de los temas que se estudian del texto base "INGENIERÍA DEL SOFTWARE, UN ENFOQUE PRÁCTICO (7ª Edicion 2010) "

  1. El software y la ingeniería del software.
  2. Modelos del proceso.
  3. Desarrollo ágil.
  4. Principios que guían la practica.
  5. Tendencias emergente en Ingeniería del software.
  6. Conceptos de Administración de proyectos.
  7. Métricas de producto.
  8. Métricas de proceso y de proyecto.
  9. Estimación para proyectos software.
  10. Calendarización del proyecto.
  11. Administración del riesgo.
  12. Conceptos de calidad.
  13. Técnicas de revisión.
  14. Aseguramiento de la calidad del software.
  15. Estrategias de prueba de software.
  16. Administración de la configuración del software.
  17. Mejoramiento del proceso de software.


Esto es todo por ahora. Hasta la próxima entrada!


Práctica de Procesadores del Lenguaje II 2k15



Sin duda alguna es una asignatura tremendamente compleja pero a su vez apasionante.

En este caso, el alumno deberá comprender el análisis semántico, así como el proceso final de traducción de un lenguaje formal a las serie de instrucciones manejables por un microprocesador.

Los objetivos que se persiguen son:


  • Aprender a valorar la semántica subyacente a las construcciones sintácticas.
  • Aprender a integrar el sistema de tipos dentro de un compilador.
  • Estudiar la traducción de cada una de las construcciones de un lenguaje imperativo.
  • Aprender a dar soporte a la ejecución de invocaciones recursivas de subprogramas.
  • Aprender a dar soporte a la declaración anidada de subprogramas.
  • Conocer los procesos de generación de código ejecutable.
Y cuyo contenido es:
  • Análisis semántico
    • Gramáticas con atributos
    • Tabla de símbolos
    • Tipos de datos y verificación de tipos
  • Ambientes de ejecución
    • Organización de la memoria
    • Ambientes de ejecución estáticos
    • Ambientes de ejecución basados en pila
    • Paso de parámetros
  • Generación de código
    • Código intermedio
    • Generación de estructuras de datos
    • Generación de código para expresiones
    • Generación de código para sentencias de control
    • Generación de código para invocación de subrutinas
    • Optimización de código

El objetivo de la práctica es realizar un compilador del lenguaje PascUned, variación del lenguaje de programación Pascal, en sus fases de análisis semántico, generación de código intermedio y generación de código final.

En cuanto a la resolución de la práctica, los siguientes enlaces contienen el enunciado de la práctica, el proyecto completo para Eclipse y la memoria práctica:
See you soon!