数据库
首页 > 数据库> > PHP MySQL注入示例?

PHP MySQL注入示例?

作者:互联网

参见英文答案 > How can I prevent SQL injection in PHP?                                    28个
我想使用PHP / Mysql注入一个登录示例,我的代码如下.

我尝试使用任何用户名 – 和一个空密码但它不起作用,我无法登录.

谁能帮助我?

<?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语句,如其他例子中所示.

标签:php,mysql,code-injection
来源: https://codeday.me/bug/20191007/1866715.html