stamin4
  • whoami
  • HTB Academy
    • Introduction to Academy
    • Learning Process
    • Vulnerability Assessment
    • Web Requests
    • Introduction to Networking
    • Linux Fundamentals
    • Brief Intro to Hardware Attacks
    • Setting Up
    • Using the Metasploit Framework
    • Security Incident Reporting
    • Introduction to Web Applications
    • JavaScript Deobfuscation
    • Attacking Web Applications with Ffuf
    • Windows Fundamentals
    • File Inclusion
  • HTB Machines
    • Windows
      • 🟢Easy
      • 🟠Medium
      • 🔴Difficult
      • 🟣Insane
    • Linux
      • 🟢Easy
        • Cap
      • 🟠Medium
      • 🔴Difficult
      • 🟣Insane
  • OverTheWire
    • Bandit
      • Nivel 0
      • Nivel 1
      • Nivel 2
      • Nivel 3
      • Nivel 4
      • Nivel 5
      • Nivel 6
      • Nivel 7
      • Nivel 8
      • Nivel 9
      • Nivel 10
  • Base de datos
    • SQL
      • SELECT queries 101
      • Queries with constraints (Pt. 1)
      • Queries with constraints (Pt. 2)
      • Filtering and sorting Query results
      • Simple SELECT Queries
      • Multi-table queries with JOINs
      • OUTER JOINs
      • A short note on NULLs
      • Queries with expressions
      • Queries with aggregates (Pt. 1)
      • Queries with aggregates (Pt. 2)
      • Order of execution of a Query
      • Inserting rows
      • Updating rows
      • Deleting rows
      • Creating tables
      • Altering tables
      • Dropping tables
  • PortSwigger
    • Path Traversal
  • Dockerlabs
    • Trust
    • Firsthacking
    • Upload
Powered by GitBook
On this page
  • Overview
  • Qué es SQL
  • Qué es base de datos relacional y no relacional
  • SQL
  • NoSQL
  • Instalación de MySQL
  • Ejercicios
  1. Base de datos

SQL

PreviousBase de datosNextSELECT queries 101

Last updated 1 year ago

Overview

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.


Qué es SQL

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.


Qué es base de datos relacional y no relacional

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.

SQL

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

tweet_id
msg
user_id

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

user_id
username

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.

NoSQL

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.


Instalación de MySQL

Nos dirigimos al sitio oficial de MySQL en la sección downloads y descargamos la versión correspondiente para nuestro sistema operativo.


Ejercicios

Como ya mencioné previamente, los ejercicios que se resuelven en las secciones posteriores provienen de esta web: .

Curso de SQL desde cero | Bases de Datos para principiantes
MySQL Community (GPL) Downloads »
SQLBolt