Académique Documents
Professionnel Documents
Culture Documents
2023/2024
Avant de commencer, assuez-vous d’avoir sur vdn, le réseau secure. Si ce n’est pas la
cas, comme pour le TP précédent, entrez la commande suivante sur votre machine (pas dans
vdn):
wget https://sancy.iut.uca.fr/~lafourcade/SECWEB/SQLIA.tar
Pour lancer docker aller dans le répertoire SQLIA et faites docker-compose up ce qui va lancee
le site http://172.19.19.19:8080/.
Désactiver le proxy: Vérifier que le proxy soit coupé, car il bloque une partie des requêtes
en HTTP. Il faut au préalable désactiver le proxy via la commande suivante:
Une fois l’exercice terminé, il faut remettre le proxy à l’aide de la commande suivante:
export http_proxy=http://192.168.128.139:8080
export https_proxy=http://192.168.128.139:8080
Tester que le site est accessible avec links http://172.19.19.19:8080 en ligne de com-
mande, ou bien curl http://172.19.19.19:8080/ Une fois docker quitté il faut faire
docker-compose down --volumes pour arrêter proprement le système.
1. Aller sur la page level0 et monter une attaque par SQL injection sur le site myblog.com
pour se connecter comme user et comme admin. Sachant que la requête à la base de
données est :
Quand le nombre de résultats de la requête est 1 alors l’utilisateur choisi peut se con-
necter.
1
https://sqlmap.org/
2
https://www.openwall.com/john/
3
https://hashcat.net/wiki/doku.php?id=example_hashes
1
2. Installer SQLMAP en faisant un git clone de :
Aller sur la page level1 et utiliser l’outil SQLMAP avec les options --data et ensuite
--dump (cette deuxième option est lente mais très efficace). Pour récuperer la totalité
de la BD.
Une fois le contenu de la BD obtenu, utiliser le dictionnaire rockyou.txt disponible à
https://perso.limos.fr/~gamarcadet/enseignement/websec23/rockyou.txt.tar.gz
avec le logciel JohnTheRipper ou Hashcat pour retoruver les mots de passe des deux
utilisateurs de ce niveau.
Remarque pour effeacer les résultats de sqlmap il faut faire sqlmap --purge.
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
modified = 0;
gets(buffer);
if(modified != 0) {
printf("you have changed the ’modified’ variable\n");
} else {
printf("Try again?\n");
}
return 0;
}
2
global password
def checkpassword(l):
for i in range(len(password)):
time.sleep(1)
if password[i]!= l[i]:
return(False)
return(True)
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>
if(argc == 1) {
printf("please specify an argument\n");
return 1;
}
modified = 0;
strcpy(buffer, argv[1]);
if(modified == 0x61626364) {
printf("you have correctly got the variable to the right value\n");
} else {
printf("Try again, you got %d\n", modified);
}
}