• STATISTIQUES
  • Il y a eu un total de 2 membres et 12589 visiteurs sur le site dans les dernières 24h pour un total de 12 591 personnes!


    Membres: 2 433
    Discussions: 3 585
    Messages: 32 832
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [FR] Root-Me
    Notre équipe se base sur un constat : à l'heure actuelle ou l'information tend à devenir...
    Hacking
    [EN] Defcon
    Lancé en 1992 par Dark Tangent, DEFCON est la plus ancienne et la plus grande conférence underground de...
    Hacking
    [FR] frameip
    le site de partage des connaissances du monde TCPIP
    Protocole
    [FR] PHP France
    Pour tout savoir sur le PHP, en français. Vous trouverez des tutoriels, des exemples, des astuces, toute la do...
    Hacking
    [FR] Hackfest
    Le Hackfest est un évènement de sécurité et de piratage informatique au Québec reg...
    Hacking
    [EN] Rankk
    Site de challenge construit sur le principe d'une pyramide à 9 level. Level 1: 60,Level 2: 72,Level 3: 68,Lev...
    Challenges
    [EN] This is legal
    Basic: 10, Realistic: 5, Programming: 1, Bonus: 11, SQL: 2, Encryption: 6, Application: 4, User Contributed: 3
    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
Injection SQL Hard Filtre
31-08-2012, 18h20
Message : #1
oxame Hors ligne
Newbie
*



Messages : 17
Sujets : 3
Points: 0
Inscription : Jun 2012
Injection SQL Hard Filtre
Bonjour,

Je suis actuellement en train de buché sur une épreuve d'un autre site,
je vous rassure tout de suite je ne vous demande pas comment la réussir.

Je plante le décor :
tout est filtré AND, UNION, SELECT etc, je me suis donc rabattu sur les opérateur logique & | if() etc, mais comme j'ai besoin de trouvé le passe j'ai besoins d'opérateur sur les chaines de caractère,
j'ai supposé que je pouvais reconstitué ma commande LENGTH(password) = 32 avec
UNHEX(LOWER(CONCAT(CONV(4,5,35),CONV(11,11,36),..........))) et effectivement quand je mais cette suite dans un champ ex:
SELECT user,UNHEX(LOWER(CONCAT())) FROM users;

Je retrouve bien la chaine que j'ai codé, mais si je fait :

SELECT user FROM users WHERE user_id = 1 AND UNHEX(LOWER(CONCAT()));

J'ai droit a une erreur SQL
ou

SELECT user FROM users WHERE user_id = 0 | if((UNHEX(LOWER(CONCAT()))),1,0);

J'ai un Empty set.

Ne trouvant pas d'explication dans la doc Mysql je voudrais savoir si l'un d'entre vous a déjà utilisé cette cette méthode => UNHEX(LOWER(CONCAT()))) et si oui qu'est ce que je fait de mal et si cela n'est pas possible pourquoi ?? c'est considéré comme une chaine de caractère donc pas interprétable ou autre !!!

Merci d'avance.
+1 (0) -1 (0) Répondre
01-09-2012, 08h03
Message : #2
oxame Hors ligne
Newbie
*



Messages : 17
Sujets : 3
Points: 0
Inscription : Jun 2012
RE: Injection SQL Hard Filtre
Bon personne n'a répondu,

dois je en conclure que personne ne sait ?
ou est ce du fait que cela concerne une épreuve sur un autre site ? si c'est ça et que vous trouvé que c'est déplacé de m'a part je vous présente mes excuses.

en tout cas j'ai trouvé une autre bizarrerie si j'encode => 1' AND '1'='0 avec UNHEX(LOWER(CONCAT())) le premier 1 et bien interprété par mysql mais pas la suite ...

Si d'autre personne sont intéressé par l'évasion des filtres sql je vous conseille ce blog http://websec.wordpress.com/2010/12/04/s...eet-mysql/ , ainsi que ce PDF http://websec.files.wordpress.com/2010/11/sqli2.pdf
+1 (0) -1 (0) Répondre
01-09-2012, 14h08
Message : #3
Luxerails Hors ligne
Bon membre
*



Messages : 267
Sujets : 6
Points: 67
Inscription : Aug 2011
RE: Injection SQL Hard Filtre
Commence déjà par essayer de trouver une injection qui te permet de connaître le résultat d'une condition.
Après tu pourra réfléchir à trouver la longueur du pass, puis au unhex, concat etc pour la blind a proprement parler.

Citation :j'ai supposé que je pouvais reconstitué ma commande LENGTH(password) = 32 avec
UNHEX(LOWER(CONCAT(CONV(4,5,35),CONV(11,11,36),..........))) et effectivement quand je mais cette suite dans un champ ex:
SELECT user,UNHEX(LOWER(CONCAT())) FROM users;

Je retrouve bien la chaine que j'ai codé

Oui, mais tu la retrouve sous forme de chaine justement ("LENGTH(password) = 32"). Mais ça ne va pas t'aider (il n'y a pas de fonction eval() ou quoi)
+1 (1) -1 (0) Répondre
01-09-2012, 17h49
Message : #4
oxame Hors ligne
Newbie
*



Messages : 17
Sujets : 3
Points: 0
Inscription : Jun 2012
RE: Injection SQL Hard Filtre
Salut Luxerails,

Déja merci d'avoir répondu,

J'ai trouvé une injection qui marche :

mysql> select user,password from users WHERE user_id = if((1 = 1),1,0);
+-------+----------------------------------+
| user | password |
+-------+----------------------------------+
| admin | 5f4dcc3b5aa765d61d8327deb882cf99 |
+-------+----------------------------------+
1 row in set (0.00 sec)

mysql> select user,password from users WHERE user_id = if((1 = 0),1,0);
Empty set (0.00 sec)

la c'est la copie de la sortie de mon serveur mysql, mais sur l'épreuve j'ai bien un membre existant / membre inconnue.

J'avais (enfin) finis par comprendre que mon UNHEX(CONTCAT(CONV())) était considéré comme une chaine de caractére et non pas comme une commande avec le test suivant :

mysql> SELECT user,HEX(password),HEX(LOWER(CONCAT(CONV([password])))) FROM users WHERE user_id = 1;
+-------+----------------------------------------------------------------------------+------------------------------------------+
| user | HEX(password) | HEX(LOWER(CONCAT(CONV([password])))) |
+-------+----------------------------------------------------------------------------+------------------------------------------+
| admin | 3566346463633362356161373635643631643833323764656238383263663939 | 307837303631373337333737366637323634 |
+-------+-----------------------------------+-----------------------------------------------------------------------------------+
1 row in set (0.00 sec)

J'avais trouvé sur ton site l'idée d'utilisé directement l'instruction en Hexa :
"LENGTH(password) = 32" => 0x4c454e4754482870617373776f726429203d203332;
ce qui marche en local:

mysql> SELECT user FROM users WHERE user_id = if((0x4c454e4754482870617373776f726429203d203332),1,0);
+-------+
| user |
+-------+
| admin |
+-------+
1 row in set (0.00 sec)

mais le UPPER du code PHP transforme le 0x en 0X et n'est donc plus interprété comme une instruction en hexa, j'ai pensé a faire un LOWER mais toutes les fonction sur les chaines de caractère sont filté, c'est pour cela que je m'était rabattu sur les UNHEX(CONTCAT(CONV())).

Donc j'ai la réponse a ma question c'est une chaine de caractère qui n'est pas interprété, quand j'aurais éliminé tout ce qui ne marche pas il ne resteras que la solution. Wink
+1 (0) -1 (0) Répondre
01-09-2012, 17h59
Message : #5
Luxerails Hors ligne
Bon membre
*



Messages : 267
Sujets : 6
Points: 67
Inscription : Aug 2011
RE: Injection SQL Hard Filtre
Effectivement, c'est n'est qu'une chaine de caractères. Donc la requete est finalement
if(('truc'),1,0)
Le string retourne vrai et donc le if() renvoie 1.

Bon courage, elle est galère cette épreuve. Tongue
+1 (0) -1 (0) Répondre


Sujets apparemment similaires…
Sujet Auteur Réponses Affichages Dernier message
  Injection SQL acip 12 4,063 28-07-2013, 20h30
Dernier message: gruik

Atteindre :


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