# Bases de datos (2)

En esta lección se describen las tareas a entregar esta semana:

1. Crear la carpeta para los programas de esta semana y la hoja de estilo común.
   1. Crear en Eclipse PDT una carpeta llamada "tareas5" dentro de "PHP2011" en la que se guardarán los programas.
2. Ejercicio Bases de datos 2-1
   1. Descargar la solución de los tres últimos ejercicios de la página de ejercicios Bases de datos 1 (enlace de descarga de las soluciones).
   2. Descomprimir los ejercicios en la carpeta tareas5. Se crearán las carpetas bases_de_datos_1_4, bases_de_datos_1_5 y bases_de_datos_1_6. para que Eclipse muestre esas carpetas, hay seleccionar la carpeta tareas5 (o una de nivel superior) en la ventana PHP Explorer (el árbol de la izquierda en Eclipse) y actualizar (pulsando F5 o haciendo clic derecho > Refresh).
   3. Hacer parte del ejercicio Bases de datos 2-1 de la página de ejercicios Bases de datos 2.
      1. Crear en Eclipse PDT la carpeta bases_de_datos_2_1 y copiar en ella todos todos los archivos de la carpeta bases_de_datos_1_6.
      2. Modificar las páginas funciones.php, anyadir1.php y anyadir2.php de acuerdo con el enunciado del ejercicio. La sección de comentarios situada después del ejemplo dice lo que hay que hacer. Si no sabéis cómo hacerlo, en la página de comentarios ampliados hay más ayuda disponible.
3. Ejercicio Inyección SQL
   1. Descargar la apliación vulnerable inyeccion_sql_2.zip y descomprimir la aplicación en la carpeta tareas5.
   2. Probar los ataques de inyección SQL que se comentan en la lección de Inyección SQL utilizando la aplicación que has instalado en tu ordenador .

      (Comprobar y modificar si es necesario la ubicación de la base de datos en funciones.php).

   3. En el apartado Inyección SQL 4 de esa lección se comenta que se puede intentar averiguar el nombre de algún usuario con sentencias LIKE o cambiar su contraseña. Suponiendo que se conoce el nombre de un usuario, encontrar una inyección SQL que modifique la contraseña de ese usuario al valor que queramos y comprobar que funciona (creamos un usuario con una contraseña, la modificamos con una inyección SQL y comprobamos que se ha modificado entrando como ese usuario).

      Pista para los que no sepan mucho SQL: En el ejercicio bases_de_datos_1-6 la página modificar3.php contiene una consulta de modificación, su sintaxis es UPDATE $dbTabla SET campo1='valorNuevo' WHERE campo2='valorActual'.

      Si el ejercicio os resulta muy dificil porque no sabéis SQL, no lo hagáis, pero al menos probad todas las inyecciones comentadas en la lección.

4. Enviar la tarea
   1. Ejercicio Bases de datos 2-1. Hacer las siguientes capturas de pantalla (no importa que los documentos no se vean completos en la pantalla) y guardarlas con el nombre indicado al principio de cada punto:
      - ApellidoNombre_5-1.png: ventana de Eclipse PDT en la que se vea la página anyadir1.php.
      - ApellidoNombre_5-2.png: ventana de Eclipse PDT en la que se vea la página anyadir2.php.
      - ApellidoNombre_5-3.png: ventana del navegador en la que se vea la página anyadir2.php en el servidor (que se vea algún aviso, por ejemplo, que el registro ya existe).
   2. Ejercicio Inyección SQL 4. Hacer la siguiente capturas de pantalla (no importa que los documentos no se vean completos en la pantalla) y guardarlas con el nombre indicado al principio de cada punto:
      - ApellidoNombre_5-4.png: ventana del navegador en la que se vea la página entrar2.php en la que se vea la inyección SQL que modifica la contraseña del usuario. Si no lo habéis hecho, no enviéis esta captura.
   3. Crear un archivo comprimido con las tres o cuatro imágenes llamándolo ApellidoNombre_5.zip.
   4. Enviar el archivo comprimido en la tarea de la semana 5.

Nota final: En los apuntes están incluidas unas posibles soluciones de los ejercicios. Las he incluido para que sirvan de ayuda a la gente que tenga más dificultades y espero que no hagáis "trampas" recurriendo a ellas simplemente para acabar antes.

Esta obra está bajo una licencia de Creative Commons.