> For the complete documentation index, see [llms.txt](https://g4b0.gitbook.io/g4b0-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://g4b0.gitbook.io/g4b0-docs/documentation/hacking-web/sql/intro-sql-injections.md).

# Intro SQL Injections

**Cómo usan SQL las aplicaciones web**

Una app web (por ejemplo en PHP) se conecta al DBMS y ejecuta queries para guardar y recuperar datos:

```php
$conn = new mysqli("localhost", "root", "password", "users");
$query = "select * from logins";
$result = $conn->query($query);
```

El problema empieza cuando la query usa **input del usuario** sin protegerlo:

```php
$searchInput = $_POST['findUser'];
$query = "select * from logins where username like '%$searchInput'";
```

**¿Qué es una inyección?**

Ocurre cuando la aplicación interpreta el input del usuario como **código** en lugar de como un simple texto, cambiando el flujo de la query y ejecutándolo. Esto pasa cuando el input no se **sanitiza** (no se eliminan ni escapan los caracteres especiales).

La pieza clave es la comilla simple (`'`): te permite **cerrar** el campo de input y, a partir de ahí, escribir SQL propio. Si en el buscador metes `1'; DROP TABLE users;`, la query final queda:

```sql
select * from logins where username like '%1'; DROP TABLE users;'
```

Así escapas los límites de la query original e inyectas la tuya (en este caso borrando la tabla).

⚠️ Nota: encadenar queries con `;` funciona en MSSQL y PostgreSQL, pero **no en MySQL** — es solo un ejemplo simplificado.

**Errores de sintaxis**

El ejemplo anterior deja una comilla suelta al final, lo que rompe la sintaxis:

```
Error: near "'": syntax error
```

Para que una inyección funcione, la query resultante **debe seguir siendo válida**. Como normalmente no tienes el código fuente para saber cómo está armada la query original, se resuelve con **comentarios** (para anular el resto de la query) o pasando comillas simples adicionales para cuadrar la sintaxis.

**Tipos de SQL Injection**

Se clasifican según **cómo y dónde** recuperas la salida:

* **In-band** — la salida se imprime directamente en la página.
  * *Union Based*: rediriges la salida a una columna que puedas leer.
  * *Error Based*: provocas un error SQL/PHP a propósito para que el error muestre los datos.
* **Blind** — no ves la salida directa, así que extraes los datos carácter por carácter usando lógica SQL.
  * *Boolean Based*: condiciones que controlan si la página devuelve respuesta o no (según si tu condición es verdadera).
  * *Time Based*: condiciones que retrasan la respuesta con `Sleep()` cuando son verdaderas.
* **Out-of-band** — no tienes acceso a la salida, así que la rediriges a un destino remoto (ej. un registro DNS) y la recuperas desde ahí.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://g4b0.gitbook.io/g4b0-docs/documentation/hacking-web/sql/intro-sql-injections.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
