php - 如何测试我的 PHP MySQL 注入(inject)示例?

标签 php mysql code-injection

我想在登录示例中使用 PHP/Mysql 注入(inject),我的代码如下。

我已经尝试使用用户名 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 语句,如其他示例中所示。

关于php - 如何测试我的 PHP MySQL 注入(inject)示例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15758185/

相关文章:

php - sync or updateExistingPivot with Laravel——如何根据第三个标准进行填充

php - 即使使用 jquery 添加了新行,我如何在 ajax 的数据表中添加(数字总和)

PHP动态获取siteurl

php - laravel eloquent 中的一对多关系

java - 基本的 spring 依赖注入(inject)问题,没有 setter 只有 getter

mysql - MySQL中如何控制 session 并发?

mysql - 也许sql中的TIMEDIFF函数不接受列名作为参数之一

mysql - 基于外键的SELECT,更改引用

spring - 当在 Spring 中注入(inject) Autowiring 值时

没有装饰器的类中的 Angular 2 服务注入(inject)