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!

Práctica de la asignatura de Sistemas Distibuidos 2k15


Presentación de la asignatura dada por el E.D.: 
El objetivo de esta asignatura es aprender los principios básicos sobre sistemas distribuidos, así como caracterizarlos y clasificarlos en función de una serie de parámetros básicos y distinguir entre los distintos tipos de modelos utilizados en sistemas distribuidos. Además, se pondrán de manifiesto la heterogeneidad, tanto de los medios de transmisión (cable coaxial, fibra óptica, canales inalámbricos,...) como de los dispositivos hardware y componentes software que los integran.
Esto hace necesario la aparición de una capa de abstracción software, comúnmente denominada Middleware (capa intermedia), la cual proporciona servicios a las aplicaciones distribuidas tales como la comunicación entre procesos (mediante RPC y Sockets) o invocación de objetos distribuidos (mediante RMI y CORBA).

También se estudian dos de los servicios más habituales ofrecidos por cualquier sistema distribuido, el servicio de archivos distribuidos y el servicio de nombres distribuidos.

Desde mi punto de vista es una asignatura complicada de estudiar, por lo extenso del temario. Sin embargo, la práctica compensa. Es de las más gratificante que he hecho a lo largo de estos años. Eso sí, como casi todas las prácticas en la UNED, se lleva mucho tiempo dejarla medianamente completa.

Si más preámbulos subo la práctica de este año, la cual trata de construir un "Sistema básico de microblogging tipo Twitter® usando Java RMI". 

Los ficheros para su descarga son:

domingo, 13 de septiembre de 2015

Ejecutar ELF 32 bits en arquitectura de 64 bits


Me ocurre a menudo que tengo que realizar alguna acción que alguna vez hice y que al tiempo debo repetir y claro, como generalmente no las anoto, pues me toca volver a bucear por la web hasta que encuentro lo que necesito.

Especialmente esto me ocurre cada vez que participo en algún CTF y sinceramente, me da bastante coraje tener que volver a dedicar tiempo a algo que en su día ya se lo dediqué.

Es por esto, por lo que comenzaré a escribir entradas con pequeñas 'recetas' de aquello que no quiero volver a buscar cada vez que lo necesite hacer.

Por tanto, abro esta nueva categoría con una receta que me permite ejecutar ELF de 32 bits en arquitecturas de 64 bits, como es el caso de la distribución Kali Linux 2.

  1. Compruebo que arquitecturas tengo habilitadas:
    dpkg --print-foreign-architectures
  1. Si en la lista aparece i386, voy al paso 5. En caso contrario, la añado:
    dpkg --add-architecture i386
  1. Actualizo:
    apt-get update
  1. Por último la instalo:
    apt-get install sl-modem-daemon:i386
  1. Fin del proceso.