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


  • ANNUAIRE
  • [FR] frameip
    le site de partage des connaissances du monde TCPIP
    Protocole
    [EN] PHPFreaks
    PHPFreaks est un site dédié à l'apprentissage et l'enseignement du PHP. Ici vous trouver...
    Programmation
    [EN] HackQuest
    Logic: 12, JavaScript: 14, Applet: 6, CrackIt: 13, Crypto: 11, Internet: 3, Exploit: 7, Stegano: 12, Flash: 1, Programmi...
    Challenges
    [FR] Asp-php
    Tutoriaux sur ASP, PHP, ASP.net, XML, SQL, Javascript, HTML, VML - Scripts et ressources pour webmasters - Forums d&#...
    Programmation
    [FR] InfoMirmo
    Apprentissage de l'informatique par l'intermédiaire de challenges de sécurité. Venez app...
    Hacking
    [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] Exploit-db
    Une base de données d'exploits triés par genre (GHDB, Remote, Local, Web, DOS, ShellCode) à ...
    Vulnérabilités

  • 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
bypass is_numeric()
16-01-2014, 21h35
Message : #1
MLT Hors ligne
MauriceLeTendu
*



Messages : 40
Sujets : 10
Points: 26
Inscription : Dec 2012
bypass is_numeric()
Bonjour,

Je me suis fait un code poreux à l'injection sql, j'ai rajouté la fonction is_numeric().

Voici le code:
Code PHP :
<?php
try
{
$bdd = new PDO('mysql:host=localhost;dbname=test''root''');
}
catch (
Exception $e)
{
        die(
'Erreur : ' $e->getMessage());
}


$requete $_GET['id'];

if (!
is_numeric($requete))
{
echo 
"fuck you" ;

}
else
{
$reponse $bdd -> query("SELECT * FROM jeux_video WHERE id = $requete");

while (
$donnees $reponse->fetch())
{
?>
    <p>
    <strong>Jeu</strong> : <?php echo $donnees['nom']; ?><br />
    Le possesseur de ce jeu est : <?php echo $donnees['possesseur']; ?>, et il le vend à <?php echo $donnees['prix']; ?> euros !<br />
    Ce jeu fonctionne sur <?php echo $donnees['console']; ?> et on peut y jouer à <?php echo $donnees['nbre_joueurs_max']; ?> au maximum<br />
    <?php echo $donnees['possesseur']; ?> a laissé ces commentaires sur <?php echo $donnees['nom']; ?> : <em><?php echo $donnees['commentaires']; ?></em>
   </p>
<?php
}

$reponse->closeCursor(); // Termine le traitement de la requête
}
?>

D'après une discussion sur irc hier avec quelques membres, apparemment il serait possible de bypass la fonction is_numeric().

Donc j'ai essayé d'exploiter ma faille sql avec mon code protégé par is_numeric().

Mais là j e bloque je sais pas comment faire. Tout d'abord, j'ai tenté d'injecter un ' avec id=1 0x27 mais l'id est traduit par 49, la valeur décimale de 0x27 et non par '.

Ma question est donc : Est-il possible de bypass ce code ? Big Grin

Pour info j'ai pris la bdd du site du zero , dispo dans le tuto php/sql.

+1 (0) -1 (0) Répondre
17-01-2014, 10h59
Message : #2
Booster2ooo Hors ligne
Contributeur
*****



Messages : 165
Sujets : 14
Points: 63
Inscription : Aug 2011
RE: bypass is_numeric()
Je vais contourner la question car je ne connais pas la réponse. Tu travailles ici avec PDO alors pourquoi ne pas utiliser les requêtes préparées, qui, il me semble, ne sont pas sujettes aux injections?
+1 (0) -1 (0) Répondre
17-01-2014, 13h49 (Modification du message : 17-01-2014, 13h49 par Hypnoze57.)
Message : #3
Hypnoze57 Hors ligne
Web Hacker
*



Messages : 98
Sujets : 13
Points: 28
Inscription : Feb 2012
RE: bypass is_numeric()
is_numeric vérifie que la variable est bien du type numérique, pour convertir une variable en int on peut utilisé intval:

Code :
<?php
$var = intval($_GET['id']);
...mysql_query("")...
?>

Et pour répondre à ta question je n'ai jamais vu une méthode permettant de contourner ceci.
Make your own destiny now and forever !
+1 (0) -1 (0) Répondre
17-01-2014, 14h43
Message : #4
gruik Hors ligne
gouteur de savon
*



Messages : 757
Sujets : 44
Points: 482
Inscription : Oct 2012
RE: bypass is_numeric()
(17-01-2014, 13h49)Hypnoze57 a écrit : is_numeric vérifie que la variable est bien du type numérique

yep, c'est même marqué directement dans la doc, suffit de regarder l'exemple, du coup c'est pas un bypass c'est juste savoir coder finalement
Avant donc que d'écrire, apprenez à penser.
Selon que notre idée est plus ou moins obscure, l'expression la suit, ou moins nette, ou plus pure.
Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément.
(Nicolas Boileau, L'Art poétique)
+1 (0) -1 (0) Répondre
17-01-2014, 19h56
Message : #5
Hypnoze57 Hors ligne
Web Hacker
*



Messages : 98
Sujets : 13
Points: 28
Inscription : Feb 2012
RE: bypass is_numeric()
(17-01-2014, 14h43)gruik a écrit : yep, c'est même marqué directement dans la doc, suffit de regarder l'exemple, du coup c'est pas un bypass c'est juste savoir coder finalement

C'est même marqué directement dans son nom :p
Je sors -->[]
Make your own destiny now and forever !
+1 (0) -1 (0) Répondre
17-01-2014, 22h09 (Modification du message : 17-01-2014, 22h20 par MLT.)
Message : #6
MLT Hors ligne
MauriceLeTendu
*



Messages : 40
Sujets : 10
Points: 26
Inscription : Dec 2012
RE: bypass is_numeric()
je sais bien à quoi sert is_numeric()

mais 'or 1=1 -- = 0x276f7220313d31202d2d et c'est bien une valeur numérique Smile

Si on injecte ceci : fichier.php?id=0x276f7220313d31202d2d, sa contourne bien la fonction mais d'après mes tests, derrière ça à pas l'air de poutrer la requête sql

comme je le disais dans mon premier post, par exemple si on prend le 'simple quote'

' = 27 en hexa et 39 en décimal

si on injecte 0x27 , c'est traduit en 39 et non pas en caractère '

+1 (0) -1 (0) Répondre
18-01-2014, 00h14 (Modification du message : 18-01-2014, 00h14 par Hypnoze57.)
Message : #7
Hypnoze57 Hors ligne
Web Hacker
*



Messages : 98
Sujets : 13
Points: 28
Inscription : Feb 2012
RE: bypass is_numeric()
edit (reformuler): 0x276f7220313d31202d2d = de l'hexa, le type numéric accepte l'hexa mais je ne pense pas qu'sql va le decoder pour l'executer mais plutot l'executer tel qu'elle.
Make your own destiny now and forever !
+1 (0) -1 (0) Répondre
18-01-2014, 00h39
Message : #8
gruik Hors ligne
gouteur de savon
*



Messages : 757
Sujets : 44
Points: 482
Inscription : Oct 2012
RE: bypass is_numeric()
(17-01-2014, 19h56)Hypnoze57 a écrit : C'est même marqué directement dans son nom :p

Code PYTHON :

>>> print u'42'.isnumeric()
True
>>> print u'0x90'.isnumeric()
False
>>> print '42'.isdigit()
True
>>> print '0x90'.isdigit()
False
 


python a écrit :The method isnumeric() checks whether the string consists of only numeric characters.
The method isdigit() checks whether the string consists of digits only.
php a écrit :Détermine si la variable donnée est de type numérique (...) Les notations hexadécimale (...), binaire (...), octale (...) sont également autorisées

faut se méfier du nom et se fier à la doc Wink (bon ok dans le cas de php faut surement plutôt se méfier du langage directement...)
Avant donc que d'écrire, apprenez à penser.
Selon que notre idée est plus ou moins obscure, l'expression la suit, ou moins nette, ou plus pure.
Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément.
(Nicolas Boileau, L'Art poétique)
+1 (0) -1 (0) Répondre
18-01-2014, 13h44
Message : #9
MLT Hors ligne
MauriceLeTendu
*



Messages : 40
Sujets : 10
Points: 26
Inscription : Dec 2012
RE: bypass is_numeric()
D'après mes recherches, on peut pas contourner is_numeric() en php.

c'est isnumeric() en sql que l'on peut contourner. http://classicasp.aspfaq.com/general/wha...meric.html

+1 (0) -1 (0) Répondre
18-01-2014, 15h03
Message : #10
gruik Hors ligne
gouteur de savon
*



Messages : 757
Sujets : 44
Points: 482
Inscription : Oct 2012
RE: bypass is_numeric()
(18-01-2014, 13h44)MLT a écrit : c'est isnumeric() en sql que l'on peut contourner.

d'après ce que je lis la fonction n'est dispo qu'en T-SQL et donc à priori uniquement sous Microsoft SQL Server, ça me semblait important de le préciser...
Avant donc que d'écrire, apprenez à penser.
Selon que notre idée est plus ou moins obscure, l'expression la suit, ou moins nette, ou plus pure.
Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément.
(Nicolas Boileau, L'Art poétique)
+1 (1) -1 (0) Répondre


Sujets apparemment similaires…
Sujet Auteur Réponses Affichages Dernier message
  FRP bypass Peanut_the_0ne 1 116 13-01-2023, 19h38
Dernier message: Di0Sasm
  bypass addslashes() MLT 0 215 18-01-2014, 16h59
Dernier message: MLT
  [pentest] bypass file integrity system playzzzz 10 577 23-07-2013, 16h00
Dernier message: InstinctHack

Atteindre :


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