【问题标题】:cause sql injection导致sql注入
【发布时间】:2012-01-21 18:42:55
【问题描述】:

我正在学习 sql 注入,并且对如何导致这种情况非常感兴趣。 我已经写了脚本来看看它是怎么回事。所以这是我的代码 =>

if (isset($_POST['act'])){
    if ($connection = mysqli_connect($var['host'],$var['user'],$var['password'],$var['database'])){
        if (mysqli_connect_errno()==0){
            $username = $_POST['username'];
            $password = $_POST['pswd'];
            if ($result = mysqli_query($connection,"SELECT username,password FROM login WHERE username='" . $username . "' AND password='" . $password . "'")){
                if (mysqli_num_rows($result)){
                    header("Location: http://localhost/default.php");
                } else {
                    $res = "Invalid Credentials ...";
                }
            }
        }
    }
}

<form name="action" method="post" action="index.php">
    Username:<input type="text" name="username" size="12"><br>
    Password:<input type="password" name="pswd" size=12><br>
    <input type="submit" name="act" value="Login">
</form>

我在表格中这样写,但什么也没发生

用户名和密码形式 => some' OR '1'='1'

我很感兴趣如何让 sql 注入破坏这个脚本,并且在没有有效凭据的情况下重定向到 default.php(当然在标记的脚本中)

谢谢...

【问题讨论】:

  • 没什么我的意思,它没有写“无效的凭据”,也没有重定向。我认为它正在发生 sql 错误,但它无法在脚本中显示
  • 您是否尝试在表单中输入用户名' or 1=1 并将密码设置为'
  • 在这种情况下,您至少应该在代码顶部添加error_reporting(E_ALL);,以便我们可以看到您的代码返回的任何错误
  • 是的,没什么特别的 :(,现在我尝试 error_reporting

标签: php html sql forms code-injection


【解决方案1】:

尝试输入' OR 1 -- 作为用户名

另外,以防万一,如果你禁用了magic_quotes_gpc :)

【讨论】:

  • 你不是说OR 1 = 1 --吗?
  • @DaHaKa -- 是 SQL 中的注释。
  • -- 是评论的开头。 -- 之后的任何内容都被 MySQL 忽略(直到结束 od 行)
  • 理解但没有——我不能实现我想要的,为什么?
  • 我也有一个问题,当我写用户名时:' OR 1 -- 和密码:' 有效,但为什么相反?
【解决方案2】:

你看过这个吗?非常基本,但如果您是 SQL 注入的新手,则很有趣 http://www.youtube.com/watch?v=bORZlmyDw0s

【讨论】:

    猜你喜欢
    • 2023-02-03
    • 1970-01-01
    • 2018-06-25
    • 2021-08-21
    • 2018-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多