如何测试我的PHP MySQL注入示例?

如何测试我的PHP MySQL注入示例?,php,mysql,code-injection,Php,Mysql,Code Injection,我想将PHP/Mysql注入用于一个登录示例,我的代码如下 我尝试过使用用户名anything'-和空密码,但无效,无法登录 有人能帮我吗 <?php mysql_connect('localhost','root','root'); mysql_select_db('hp'); ?> <form action="" method="post"> <table width="50%"> <tr> <td>Use

我想将PHP/Mysql注入用于一个登录示例,我的代码如下

我尝试过使用用户名
anything'-
和空密码,但无效,无法登录

有人能帮我吗

<?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';
    }
}
?>

使用者

最常见的示例之一是此查询:

' or '1'='1
如果将此作为用户名和密码输入到一些未初始化的登录输入中,查询将更改如下:

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

这使得它所寻找的每一件事情都是真实的,因为1永远等于1。此方法的问题在于它不允许选择特定用户。要这样做,您需要像在其他示例中看到的那样,通过注释使其忽略AND语句。

如果username的值为:

 $_POST['user'] = "1' OR 1 LIMIT 1; --";
然后mysql查询变成:

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

mysql不是只允许每个查询一行吗?一行,这是真的,但一行表示一个查询分隔符:
The
-
-表示注释掉之后的代码。所以实际上上面的查询是一个查询。为了使代码可读,我只是打断了几行。我大多数时候使用#而不是--。我通常在查询后尝试#像1'或1=1#,因此之后的代码被注释掉。有人也可以用--