|
|
Injection SQL
 |
| Auteur |
Message |
M.C. Invité
|
Posté le: Sam Mar 07, 2009 2:45 pm Sujet du message: Injection SQL |
|
|
Bonjour à tous,
Je suis actuellement en train de simuler une attaque de type injection SQL en localhost utilisant (http://127.0.0.1. ..........) le serveur apach....
Voilà mon formulaire (partie identifiation):
| Code: |
<?php
session_start();
$Message = '';
if (isset($_GET['valider']) && $_GET['valider']=='Envoyer')
{
if ((!empty($_GET['id'])) && (!empty($_GET['pwd'])) )
{
$_SESSION['id']=$pseudo = $_GET['id'] ;
//$pseudo = $_GET['id'] ;
$_SESSION['pwd']=$pass = $_GET['pwd'] ;
//$pass = $_GET['pwd'] ;
mysql_connect("localhost", "root","mysql");
mysql_select_db('base');
$result = mysql_query("SELECT * FROM donne WHERE id = '$pseudo' and pwd = '$pass' ;" );
if($result)
{
$enr=mysql_fetch_assoc($result);
$login=$enr["pwd"];
}
else
{
$login="";
}
mysql_close();
if($login == $_SESSION['pwd'] )
{
//header('location:page1.php');
echo 'vous etes connecte';
}
else
{
$_SESSION['id'] = '';
$_SESSION['pwd'] = '';
$Message ='Mauvais login et/ou mot de passe';
}
}
else
{
$Message = 'Au moins un des champs est vide.';
}
}
?> |
Question:
J'ai essayer à plusieurs reprises d'usurper l'identifications, mais je n'y suis pas arriver, est ce le serveur http d'apache qui est sécurisé ou bien c'est moi qui s'y prend mal ?
Merci pour votre aide.
Cordialement,
M.C. |
|
| Revenir en haut de page |
|
| Auteur |
Message |
JeremyA Site Admin
Inscrit le: 01 Nov 2006 Messages: 193
|
Posté le: Dim Mar 08, 2009 7:30 pm Sujet du message: |
|
|
Regarde ton phpinfo. safemode on ? magic quotes ? etc.
de tte maniere si ce script a une vocation à etre sur internet, tu devrai protéger tes variables. Pas de GET mais POST. et mysql_real_escape(), htmlentities() etc. _________________ Scanner TCP/UDP
Brute Force DNS
Sniffers et Anti Sniffers |
|
| Revenir en haut de page |
|
| Auteur |
Message |
bmigette
Inscrit le: 01 Fév 2009 Messages: 5
|
Posté le: Lun Mar 09, 2009 9:55 pm Sujet du message: |
|
|
Essaie un truc du genre en login user et en password:
invalidpass' UNION all select concat("user") user, concat("invalidpass") from donne |
|
| Revenir en haut de page |
|
| Auteur |
Message |
PhOeNiX95
Inscrit le: 13 Avr 2009 Messages: 13 Localisation: Fais un traceroute :)
|
Posté le: Lun Avr 13, 2009 12:44 pm Sujet du message: |
|
|
A première vue, je peux t'assurer que 3 points de ton script sont vulnérables...
1) $_GET['id'] ;
Pas de traitement de la variable (htmlentities + regex)
Sache que la méthode POST est plus sécurisée que GET
2) $_GET['pwd'] ;
IDEM
3) $result = mysql_query("SELECT * FROM donne WHERE id = '$pseudo' and pwd = '$pass' ;" );
C'est la requête dangereuse typique qui fait que beaucoup de sites tombent
La formulation fait que si tu entre 'OR 1=1# dans le champ, alors le AND sera bypass (en commentaire) et la condition sera réalisée grâca au "1=1" qui est toujours vrai
Voila. |
|
| Revenir en haut de page |
|
|
Page 1 sur 1
|
|
|