PHP MySQL注入示例?

问题描述 投票:18回答:2

我想通过一个登录示例使用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';
    }
}
?>
php mysql code-injection
2个回答
24
投票

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

' 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语句。


8
投票

如果用户名的值为:

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

然后mysql查询变为:

select * 
from zend_adminlist 
where user_name = '1' OR 1 LIMIT 1; --' and password = '$pass'
© www.soinside.com 2019 - 2024. All rights reserved.