• Так можно ли обойти mysqli_real_escape_string?

    @Etherata
    FanatPHP, для строки он всё кушает и не выдаёт ошибок(
    Специально сейчас настроила, чтоб в файл лога писал и запрос, какой реально до базы дошёл и ошибка.
    Так он всё заковычивает, "лишнюю часть" просто считает легальной частью строки, не модифицируя запрос. А если дать ему кавычек во входе, экранирует их слешами и съедает как ни в чём ни бывало(
    Но там на вход он ждёт именно строку, а не число.
  • Так можно ли обойти mysqli_real_escape_string?

    @Etherata
    Понятно... Спасибо!

    Действительно раньше считала, что весь подбор SQL-инъекции сводится к угадыванию структуры базы, отчего думала, что существует "универсальная" фраза, где только поменять названия базы на существующее или что-то такое. И понимала, что что-то не понимаю, когда все банальные примеры из методичек по инъекциям отказывались работать.
  • Так можно ли обойти mysqli_real_escape_string?

    @Etherata
    FanatPHP, тогда я действительно не понимаю про SQL-инъекции.
    $id = "1; DROP TABLE users;"
    $id = mysqli_real_escape_string($link, $id);
    $query = "SELECT * FROM users where id = $id";

    Ваш пример выше.
    Объясните тогда, почему это вариант должен работать, а вариант где вместо таблицы users - таблица testtable - нет?
    -----
    Стоп. потому что в вашем слчае идёт селект из той же таблицы, которую дропаешь?
  • Так можно ли обойти mysqli_real_escape_string?

    @Etherata
    FanatPHP, мимо.
    Я знаю SQL, плюс-минус. Вот PHP знаю плохо, врать не буду.
    Вокруг mysqli_real_escape_string шума много. Ещё до того, как наткнуться на эту тему, пробовала на вход защищаемого через "mysqli_real_escaoe_string" подавать разное. Пока что ничего не сработало. Ок, может не до конца верно понимаю взаимодействие Php с таким запросом, в конце концов, может PHP как-то ломает SQL синтакс? Проверяла разные примеры из методичек по SQL инъекции. Безрезультатно. Наткнулась на эту тему, стало реально интересно. Ну, думаю, здесь-то точно дадут пример SQL-инъекции, что 100% сработает. Проверяю - та же фигня.

    P.S. Я признаю, что подготовленные запросы безопаснее, надёжнее, а mysqli вообще не про это. Но мне нужен работающий пример SQL инъекции через mysqli чтобы пройтись по всем спорным местам и отловить уязвимые для инъекции места.
  • Так можно ли обойти mysqli_real_escape_string?

    @Etherata
    Проверила. Специально создала testtable.
    Передала в передаваемом параметре "1; drop table testtable;"
    testtable на месте.

    Мне действительно интересен пример атаки, где mesqli_real_escape_string не спасёт.