Параметры SQL-инъекций не работают на моей странице - PullRequest
0 голосов
/ 19 мая 2018

У меня есть форма входа в систему, и я запутался, почему мои параметры SQL-инъекций здесь не работают.У меня нет какой-либо функции или метода для предотвращения SQL-инъекций.

Я сделал эту форму входа для тестирования SQL-инъекций, и она написана на PHP.Вот мой код.

<?php
    include("myconnection.php");

    $error="";
    if(isset($_POST["submit"]))
    {
        if($_POST["username"] == '' || $_POST["password"]== '')
        {
            $error='Please fill the blanks!';

        }else
        {

            $username=$_POST['username'];
            $password=$_POST['password'];

            $sql="SELECT * FROM users WHERE username='$username' AND password='$password'";
            $result=mysqli_query($db,$sql);
            $row=mysqli_fetch_array($result,MYSQLI_ASSOC);

            if(mysqli_num_rows($result)==1)
            {
                $login_user=$_POST["$username"];    
                header("location: myhome.php");
                $error="Connected";

            }
            else
            {

            //$error="Incorrect Username/Password";
              $message="Incorrect Credentials";
              echo "<script='text/javascript'>$message</script>";

            }

        }
    }
    else
    {


    }

?>

Я попытался admin'OR'1 '=' 1 в полях имени пользователя и пароля, а также в любых других возможных базовых инъекциях, но это не работает.Я пытался использовать базовую SQL-инъекцию на большинстве рабочих сайтов, и она работает, я просто запутался, мой код не принимает sql-инъекции.

И это дает мне то же эхо, когда у вас неправильные учетные данные.

this

1 Ответ

0 голосов
/ 19 мая 2018

Я надеюсь, что это сделано для академических целей, так как я понятия не имею, почему вы хотели бы иметь это на любых производственных веб-сайтах.При этом, вероятно, это связано с тем, что AND также должно быть верным, чтобы запрос возвращал какие-либо результаты.Где, как если бы вы отправили admin'OR'1'='1 в поле имени пользователя, ваш запрос будет выглядеть так:

SELECT * FROM users WHERE username='admin'OR'1'='1' AND password='123'

Это читается как ГДЕ имя пользователя равно admin ИЛИ 1 равно 1 И пароль равно 123. Возможно, вам потребуетсявыяснить, как также обойти эту проверку, поскольку она все еще будет пытаться сопоставить поле пароля и наоборот поле имени пользователя.

Кажется странным сказать, но если вы хотите ввести что-то, возможно, это будет работать в поле имени пользователя injection' OR 1 LIMII 1# Что могло бы сделать что-то вроде этого

SELECT * FROM users WHERE username = 'injection' OR 1 LIMIT 1#' AND password = 'pass'

По сути, вы уже вводите SQL, вы просто не делаете это таким способом, который дает желаемые результаты.Попробуйте повторить запрос и запустить его непосредственно в интерфейсе командной строки mySQL, чтобы увидеть, что это за набор результатов и является ли он правильным запросом.Возможно, поэкспериментируйте с запросом, чтобы попытаться получить желаемую инъекцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...