Я проверяю на инъекцию на моем сайте, я получаю эту ошибку - PullRequest
0 голосов
/ 03 марта 2019

Я пытаюсь сделать этот запрос для проверки на инъекцию.Где ошибка в моем запросе?

<?php

$query= "SELECT * FROM login where email = '1' or '1' = '1' limit 1;/*' and password = '1e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855223'";

$result = mysqli_query($connection,$query) or die(mysqli_error($connection)); 

?>

Ошибка результата: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '/*' and password = '1e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b785' at line 1

Если я выполняю запрос в mysql workbench, он работает нормально, но при помещении в mysqli выдает ошибку.

Спасибо за вашу помощь и счет вниз.Простой ответ - использовать # вместо /*.

Bye

Ответы [ 2 ]

0 голосов
/ 03 марта 2019

MySQL поддерживает синтаксис комментариев в стиле /* ... */, но вам нужно использовать закрывающую часть.Поскольку вы пытаетесь внедрить SQL-запрос, у вас обычно нет возможности изменить SQL-запрос, за исключением одного момента.Таким образом, вы также не можете добавить закрывающую часть комментария */ к концу запроса.

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

WHERE email = '1' or '1' = '1' limit 1;/*' and password = ... */
               ^^^^^^^^^^^^^^^^^^^^^^^^^^                     ^^

MySQL также поддерживает синтаксис комментариев ANSI SQL, который представляет собой один --, предшествующий остальной части строки.Все последующее -- будет проигнорировано, и для этого типа комментариев нет синтаксиса закрытия.

WHERE email = '1' or '1' = '1' limit 1;--' and password = ... 
               ^^^^^^^^^^^^^^^^^^^^^^^^^^                     

См. https://dev.mysql.com/doc/refman/8.0/en/comments.html

0 голосов
/ 03 марта 2019

Вы не можете ввести предложение where (and password = [...]) после предложения limit.limit должно быть в конце вашего запроса.

...