Se connecter / S'enregistrer
Votre question

faille ou pas ?

Tags :
  • MySQL
  • Programmation
Dernière réponse : dans Programmation
3 Février 2008 01:50:48

Bonjour,
c'est peut être une question bête, mais j'ai remarqué quelque chose sur mon site (en local): j'ai mis une pagination sur l'index, comme sa:
  1. http://localhost/monsite/index.php?page=numéro de la page



es-ce que c'est normal que quand je tape
  1. http://localhost/monsite/index.php?page=<a href="http://google.fr" rel="nofollow" target="_blank">http://google.fr</a>



c'est écrit:
  1. Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\wamp\www\monsite\news.php on line **




je ne devrai pas être redirigé vers l'index ? Car quend j'essaye de faire ça sur d'autres sites je suis automatiquement redirigé vers l'index

Autres pages sur : faille

3 Février 2008 14:55:53

C'est normal !
dans ton include, tu a preciser une extension. Php, ou TXT je sais pas...
pour tester, il te faut une page dont l'extensions est .php (ou autre c toi qui a choisit dans le code de l'include)
ma page de test est celle la : http://trust-in-us.fr/test.php
essaye sans le .php
met donc /?page=http://trust-in-us.fr/test
Si il t'affiche le texte et l'image, t'es vulnerable, sinon t'es protégé !
apres pour mettre une redirection euh ca doit etre quelque chose du genreelse {
include("index.php");
}
3 Février 2008 15:19:27

salut,
j'ai essayé, et apparament je ne suis pas vulnérable puisque le texte et l'image ne s'affiche pas
merci à toi
Contenus similaires
3 Février 2008 22:01:55

Quand ton site sera en ligne, envoi moi l'url, j'te dirais si il y a une faille ;) 
j'ai trouvé un site avec une faille include cet aprem.. fais gaffe avec ca, car TOUT mais alors TOUT est modifiable avec l'upload d'une page qu'on appelle backdoor...

enjoy
a c 232 L Programmation
3 Février 2008 23:28:25

A mon avis, ça sent la grosse faille à plein nez.
Car pour avoir une erreur mysql, ça veut dire que tu ne traites pas pour voir si oui ou non le numéro de page est un chiffre, et si c'est pas un chiffre, tu mets 1.
3 Février 2008 23:42:22

voici mon script:
  1. <?php
  2. mysql_connect("localhost", "root", "");
  3. mysql_select_db("site");
  4. $retour = mysql_query('SELECT * FROM news ORDER BY id DESC LIMIT 0, 5');
  5. while ($donnees = mysql_fetch_array($retour))
  6. // PAGINATION
  7. $nombreDeMessagesParPage = 5;
  8. $retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM news');
  9. $donnees = mysql_fetch_array($retour);
  10. $totalDesMessages = $donnees['nb_messages'];
  11. $nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage);
  12.  
  13. //PAGINATION
  14.  
  15. if (isset($_GET['page']))
  16. {
  17. $page = intval($_GET['page']);
  18. }
  19. else
  20. {
  21. $page = 1;
  22. }
  23.  
  24. $premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;
  25.  
  26. $reponse = mysql_query('SELECT * FROM news ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage) or die(mysql_error($page = 1));
  27.  
  28. while ($donnees = mysql_fetch_array($reponse))
  29. {
  30. $contenu = nl2br(stripslashes($donnees['contenu']));
  31. echo '<h2>';
  32. echo $donnees['titre'];
  33. echo '</h2>';
  34. echo '<div class="descr">Postée le ';
  35. echo date('d/m/Y à H\hi', $donnees['timestamp']);
  36. echo '</div>';
  37. echo '';
  38. echo $contenu;
  39. echo '<br><br><br>';
  40. }
  41.  
  42.  
  43. echo '<FORM name="formulaire" method="POST"><select size="1" name="url" onChange="navigation()" style="color:#BDB76B; width:50px; border:0px; background:#111111;">';
  44. for ($i = 1 ; $i <= $nombreDePages ; $i++)
  45.  
  46. {
  47. echo '<option value="index.php?page=' . $i . '">' . $i . '</option>';
  48. }
  49. echo '</select></form><br><br><noscript>Si vous voulez que le sélécteur de page fonctionne, vous devez activer le javascript</noscript>';
  50.  
  51.  
  52. mysql_close();
  53. ?>




j'ai rajouté:
  1. or die(mysql_error($page = 1))

maintenant quand je remplace le chiffre par un numéro de page inexistant, je n'obtient plus l'erreur, es-ce que c'est bon ?
a c 232 L Programmation
4 Février 2008 09:34:53

Euh, non faut pas rajouter ça...
Sinon, en fait ça vient de ton intval($_GET['page']), vu qu'il n'y a aucun chiffre, ton intval doit retourner 0 je pense, donc tu fais une requête LIMIT -5,5 ce qui est incompréhensible en SQL.
Remplace
  1. $page = intval($_GET['page']);

par
  1. $page = intval($_GET['page']);
  2. if($page==0) $page=1;


Et supprime ton or die(mysql_error($page=1)).



Edit: par contre le début de ton code est incompréhensible...
  1. $retour = mysql_query('SELECT * FROM news ORDER BY id DESC LIMIT 0, 5');
  2. while ($donnees = mysql_fetch_array($retour))
  3. // PAGINATION
  4. $nombreDeMessagesParPage = 5;


Utilité ?
4 Février 2008 21:04:16

merci, pourquoi le début est incompréhensible ?
a c 232 L Programmation
4 Février 2008 23:13:04

tu fais une requête que tu n'utilises même pas.
T'as un while qui sert à rien vu qu'il a pas de crochet, il exécute que l'instruction suivante, soit redéfinir 5 fois $nombredeMessagesParPage = 5, super essentiel comme étape.
Essaie de mettre une boucle de 1000 histoire que tu sois sûr que la variable soit bien définie
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS