Каталог статей
При выполнении SQL-инъекции, после определения точки внедрения, первое, что нужно сделать, это определить тип инъекции.Тип инъекции делится на символьный тип и числовой тип.После того, как тип инъекции определен, следующая SQL-инъекция может быть продолжена.
Следующая формула применима к ситуации с эхом данных. Если есть только изменения страницы, но нет эха данных, вам необходимо использовать логическую слепую инъекцию. Если на странице нет изменений, вам нужно использовать слепую инъекцию по времени для оценки. Булева слепая инъекция и слепая инъекция по времени здесь не подходят. Для объяснения описывается только самая основная ситуация с эхом данных.
в заключение
Учитывая следующие выводы, тип инъекции можно определить в три этапа. Конкретные принципы будут проанализированы позже:
- Оценка того, является ли это числом или типом символов: после
?id=1 and 1=2
оценки, если отображение ненормальное, это означает, что это числовой тип. Если отображение нормальное, это строковый тип, и для оценки необходимо продолжить следующие шаги .- Определите, к какому типу символов относится символ:
- Тест одиночной кавычки:
?id=1'
наблюдая за эхом- Тест на двойные кавычки:
?id=1"
наблюдая за эхом- Определите тип символа: если какой символ отображается как сообщение об ошибке, он указывает тип символа символа, а затем используйте соответствующий символ для закрытия и выполнения 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=2
MySQL, поэтому нормальный контент отображаться не будет. ?id=1 and 1=2
Таким образом, вы можете наблюдать за ситуацией отображения через ввод, чтобы сделать вывод, является ли это цифровой инъекцией. Если это не цифровая инъекция, это должна быть символьная инъекция, поэтому вам нужно сделать следующий шаг: является ли это цифровой инъекцией. символ одинарной или двойной кавычки .
2. Предположим, что это введение символа двойной кавычки.
1. После того, как мы введем ?id=1'
тест в одинарной кавычке, он отображается в инструкции sql следующим образом:
select * from cms_article where id="33'";
Из результатов мы можем узнать, что MySQL проигнорировал введенные нами одинарные кавычки и принял только 33, которые мы передали, таким образом обнаруживая данные. После многих попыток я заменил одинарные кавычки другими знаками препинания, и данные можно найти нормально.
Таким образом, можно сделать вывод, что: когда условие запроса является строкой, mysql прекратит поиск, когда встретит первый символ, и будет извлекать содержимое только перед первым символом и отображать его нормально. , то при достижении символа будет сообщено об ошибке, как показано на рисунке:
Таким образом, мы можем использовать эту функцию для непосредственного определения внедрения символов.
2. После того, как мы введем ?id=1"
тест двойной кавычки, он отображается в операторе SQL следующим образом:
select * from cms_article where id="33"";
Вы можете видеть, что введенные нами двойные кавычки закрыли первую кавычку в операторе sql, а затем вызвали ошибку, как показано ниже:
Окончательный вывод: если мы определим, что это внедрение символьного типа, если мы используем двойные кавычки и вызываем ошибку, это означает, что это символьный тип двойных кавычек.
3. Принцип одинарной кавычки точно такой же, как и для двойной кавычки.