FanatPHP, для строки он всё кушает и не выдаёт ошибок(
Специально сейчас настроила, чтоб в файл лога писал и запрос, какой реально до базы дошёл и ошибка.
Так он всё заковычивает, "лишнюю часть" просто считает легальной частью строки, не модифицируя запрос. А если дать ему кавычек во входе, экранирует их слешами и съедает как ни в чём ни бывало(
Но там на вход он ждёт именно строку, а не число.
Действительно раньше считала, что весь подбор SQL-инъекции сводится к угадыванию структуры базы, отчего думала, что существует "универсальная" фраза, где только поменять названия базы на существующее или что-то такое. И понимала, что что-то не понимаю, когда все банальные примеры из методичек по инъекциям отказывались работать.
FanatPHP, тогда я действительно не понимаю про SQL-инъекции.
$id = "1; DROP TABLE users;"
$id = mysqli_real_escape_string($link, $id);
$query = "SELECT * FROM users where id = $id";
Ваш пример выше.
Объясните тогда, почему это вариант должен работать, а вариант где вместо таблицы users - таблица testtable - нет?
-----
Стоп. потому что в вашем слчае идёт селект из той же таблицы, которую дропаешь?
FanatPHP, мимо.
Я знаю SQL, плюс-минус. Вот PHP знаю плохо, врать не буду.
Вокруг mysqli_real_escape_string шума много. Ещё до того, как наткнуться на эту тему, пробовала на вход защищаемого через "mysqli_real_escaoe_string" подавать разное. Пока что ничего не сработало. Ок, может не до конца верно понимаю взаимодействие Php с таким запросом, в конце концов, может PHP как-то ломает SQL синтакс? Проверяла разные примеры из методичек по SQL инъекции. Безрезультатно. Наткнулась на эту тему, стало реально интересно. Ну, думаю, здесь-то точно дадут пример SQL-инъекции, что 100% сработает. Проверяю - та же фигня.
P.S. Я признаю, что подготовленные запросы безопаснее, надёжнее, а mysqli вообще не про это. Но мне нужен работающий пример SQL инъекции через mysqli чтобы пройтись по всем спорным местам и отловить уязвимые для инъекции места.
Специально сейчас настроила, чтоб в файл лога писал и запрос, какой реально до базы дошёл и ошибка.
Так он всё заковычивает, "лишнюю часть" просто считает легальной частью строки, не модифицируя запрос. А если дать ему кавычек во входе, экранирует их слешами и съедает как ни в чём ни бывало(
Но там на вход он ждёт именно строку, а не число.