SQL
Last updated
Last updated
Conocer SQL nos permite interactuar con bases de datos, que están presentes en todos lados. En caso de ganar acceso a una base de datos al realizar un pentest (en entornos simulados o reales), es importante tener una base de conocimiento que nos permita movernos dentro de la DB y realizar consultas para extraer información relevante.
Además, es imposible que no se nos venga a la cabeza la famosa vulnerabilidad que a dÃa de hoy sigue estando entre las más comunes según el OWASP Top Ten: la inyección SQL. Saber SQL nos ayuda a comprender mejor cómo funcionan este tipo de ataques por detrás, y sobre todo, cómo explotar esta vulnerabilidad con o sin ayuda de herramientas automatizadas.
En mi caso, aprendà las bases de SQL gracias al video de midudev: . Luego, continué practicando por mi cuenta con la página que midu recomienda en su video: SQLBolt, una web que cuenta con ejercicios simples e interactivos que hacen que el aprendizaje sea mucho más dinámico.
La siguiente información corresponde a apuntes tomados de dicho video, donde explica qué es SQL, sus ventajas y desventajas con respecto a NoSQL y cómo proceder con la instalación de MySQL.
SQL (Structured Query Language) es un lenguaje de consultas estructuradas.
Es un lenguaje especÃfico de dominio, es decir, está diseñado especÃficamente para administrar consultas y sistemas de gestión de bases de datos.
Desde 1987, SQL es un estándar. Sin embargo, los motores como MySQL o PostgreSQL difieren en ciertos aspectos por lo que no son 100% SQL compliant, aunque sà se basan en dicho estándar; es necesario tener en cuenta la documentación para cada caso.
Las bases de datos relacionales pertenecen a la familia SQL. Dentro del motor de base de datos, tendremos muchas bases de datos. Dentro de cada base de datos existen tablas (entidades), que a su vez tienen atributos.
Creamos relaciones entre las tablas para optimizar y evitar la duplicidad de los datos.
En el ejemplo, usamos el user_id para crear una relación entre la tabla tweets y la tabla users. Si quisiéramos averiguar qué usuario publicó el primer tweet, entonces recuperamos su user_id y lo relacionamos con el username correspondiente.
tweets
1
Todo cuento de hadas necesita un buen villano anticuado. Me necesitas o no eres nada, porque somos iguales, tú y yo. Excepto que eres aburrido. Estás del lado de los ángeles @sherlock_holmes
4
2
No hagas que las personas se sientan como héroes, los héroes no existen, @watson. Y si existieran yo no seria uno de ellos.
1
3
Cuatro suicidios en serie y ahora una nota. ¡Es Navidad!
1
4
En un mundo de habitaciones cerradas, el hombre con la llave es el rey. Y cariño, deberÃas verme en una corona @sherlock_holmes
4
users
1
sherlock_holmes
2
john_watson
3
mrs_hudson
4
moriarty
Ventajas:
La coherencia de los datos. Si hay alguna modificación, no es necesario ir aplicándola en todas las tablas una a una.
Evita la redundancia de datos, por lo que las bases de datos son más pequeñas.
Desventajas:
Es necesario realizar muchas consultas para recuperar toda la información que nos interesa.
No hay tablas, sino colecciones de documentos. Puedes relacionar los documentos pero es más costoso porque no está construido con ese propósito.
Ventajas:
Consultas más rápidas.
Desventajas:
Normalizar los datos es problemático (que un cambio se aplique en toda la base de datos).
Las actualizaciones se tienen que hacer en todos los documentos. Por ejemplo, esto se refleja en muchas redes sociales que trabajan con NoSQL, como YouTube o Twitter, donde los likes y los comentarios no son correctos o difieren de la última versión.
La integridad de los datos no está garantizada.
Nos dirigimos al sitio oficial de MySQL en la sección downloads
y descargamos la versión correspondiente para nuestro sistema operativo.
Como ya mencioné previamente, los ejercicios que se resuelven en las secciones posteriores provienen de esta web: .