не может выполнить sql инъекцию в незащищенной форме - PullRequest
0 голосов
/ 17 февраля 2020

Попытка выполнить инъекцию sql в моей базе данных.

Мне не удалось избежать строки, которую я вставляю в запрос, поэтому я не понимаю, что мешает мне получить все идентификаторы пользователей при вставке: имя пользователя или 1 = 1 в поле ввода имени пользователя. Работает как шарм, когда я жестко кодирую 1 = 1 в необработанном запросе.

У меня нет на сервере ничего другого, что могло бы вызвать это, все, что у меня есть, это индекс. php с приведенным ниже код.

$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

$sql = 'SELECT ID FROM users WHERE username = "'.$_POST["username"].'"';
$result = mysqli_query($conn, $sql);
print_r($result);

if (mysqli_num_rows($result) > 0) {
    // output data of each row
    while($row = mysqli_fetch_assoc($result)) {
        echo "id: " . $row["ID"];
        print_r($row);
    }
} else {
    echo "0 results";
}

?>
<form method='POST' action='#'>
        username <input type'text' name='username'></input>
        <br>
        password <input type'text' name='password'></input>
        <input type='submit'>
    </form>
    <?php

1 Ответ

1 голос
/ 17 февраля 2020

Вам необходимо завершить кавычку SQL в опубликованном имени пользователя. И fini sh окончательная цитата, так что это не синтаксическая ошибка. Самый простой способ - превратить его в версию 1 = 1 в виде строк. ""="".

Итак:

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