Метод суждения и принципиальный анализ типа внедрения MySQL (демонстрация команды выполнения оператора sql)

Каталог статей

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

Следующая формула применима к ситуации с эхом данных. Если есть только изменения страницы, но нет эха данных, вам необходимо использовать логическую слепую инъекцию. Если на странице нет изменений, вам нужно использовать слепую инъекцию по времени для оценки. Булева слепая инъекция и слепая инъекция по времени здесь не подходят. Для объяснения описывается только самая основная ситуация с эхом данных.

в заключение

Учитывая следующие выводы, тип инъекции можно определить в три этапа. Конкретные принципы будут проанализированы позже:

  1. Оценка того, является ли это числом или типом символов: после ?id=1 and 1=2оценки, если отображение ненормальное, это означает, что это числовой тип. Если отображение нормальное, это строковый тип, и для оценки необходимо продолжить следующие шаги .
  2. Определите, к какому типу символов относится символ:
    • Тест одиночной кавычки: ?id=1'наблюдая за эхом
    • Тест на двойные кавычки: ?id=1"наблюдая за эхом
  3. Определите тип символа: если какой символ отображается как сообщение об ошибке, он указывает тип символа символа, а затем используйте соответствующий символ для закрытия и выполнения SQL-инъекции.

принцип

1. Предполагая цифровое внедрение

После ввода ?id=33 and 1=2это отображается в инструкции sql следующим образом:

select * from cms_article where id=33 and 1=2;

Условие id=33 позволяет найти нормальный контент, но после его добавления and 1=2 обычный контент отображаться не будет, а это означает, что то, что мы добавили, анализируется and 1=2MySQL, поэтому нормальный контент отображаться не будет. ?id=1 and 1=2Таким образом, вы можете наблюдать за ситуацией отображения через ввод, чтобы сделать вывод, является ли это цифровой инъекцией. Если это не цифровая инъекция, это должна быть символьная инъекция, поэтому вам нужно сделать следующий шаг: является ли это цифровой инъекцией. символ одинарной или двойной кавычки .

2. Предположим, что это введение символа двойной кавычки.

1. После того, как мы введем ?id=1'тест в одинарной кавычке, он отображается в инструкции sql следующим образом:

select * from cms_article where id="33'";

изображение-20230824104018918

Из результатов мы можем узнать, что MySQL проигнорировал введенные нами одинарные кавычки и принял только 33, которые мы передали, таким образом обнаруживая данные. После многих попыток я заменил одинарные кавычки другими знаками препинания, и данные можно найти нормально.

Таким образом, можно сделать вывод, что: когда условие запроса является строкой, mysql прекратит поиск, когда встретит первый символ, и будет извлекать содержимое только перед первым символом и отображать его нормально. , то при достижении символа будет сообщено об ошибке, как показано на рисунке:

изображение-20230824104539604

Таким образом, мы можем использовать эту функцию для непосредственного определения внедрения символов.

2. После того, как мы введем ?id=1"тест двойной кавычки, он отображается в операторе SQL следующим образом:

select * from cms_article where id="33"";

Вы можете видеть, что введенные нами двойные кавычки закрыли первую кавычку в операторе sql, а затем вызвали ошибку, как показано ниже:

изображение-20230824104757351

Окончательный вывод: если мы определим, что это внедрение символьного типа, если мы используем двойные кавычки и вызываем ошибку, это означает, что это символьный тип двойных кавычек.

3. Принцип одинарной кавычки точно такой же, как и для двойной кавычки.

Supongo que te gusta

Origin blog.csdn.net/weixin_46367450/article/details/132470165
Recomendado
Clasificación