mysql中sql注入的随笔

当使用如下登录代码时:就会引发sql注入问题

怎么注入呢?

'or 1=1 #

就可以了。

为什么呢?

首先or:在sql中是或者,只要满足前一个或后一个条件即可,只要所以不论你是 'or 1=1 #还是 'or 2=2 #,都可以。

#: 是注释的意思,在sql中注释掉后面的密码判断。

所以这一段不用不用密码即可输入成功,

怎么办呢?

在php中,可以有很多方法。。。。就不举例了。

<!doctype html>
<html lang="ch">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
<form action="doAction.php" method="post">
    用户名:<input type="text" name="username"/><br/>
    密码:<input type="password" name="password"/><br/>
    <input type="submit" value="submit" />
</form>
</body>
</html>
<?php
header('content-type:text/html;charset=utf8');
$username = $_POST['username'];
$password = $_POST['password'];
try {
    $pdo = new PDO('mysql:host=localhost;dbname=test', 'root', 'root');

    $sql = "SELECT * FROM user WHERE username='{$username}' AND password='{$password}'";
    $stmt = $pdo->query($sql);
    echo $sql;
    echo $stmt->rowCount();
} catch (PDOException $e) {
    echo $e->getMessage();
}

 

posted @ 2016-01-13 22:40  闻香识人  阅读(316)  评论(0编辑  收藏  举报