Вопрос или проблема
cURL
возвращает статус-код 200
после успешного входа в систему. Обычный код ответа после входа пользователя должен быть 302
. Почему я не получаю этот статус-код? Вся информация предоставлена ниже.
#!/usr/bin/env zsh
printf "\nотправка сырого запроса методом: POST ..\n"
curl -X POST \
"http://10.129.1.15/login.php" \
-H '@reqsH.txt' \
-d '@reqsP.txt' \
--compressed -i -s > resp.txt
printf "\nотображение сырого ответа: отфильтрованного ..\n"
grep --color=always -aiEw "((200|302)|server|cookie)|(?(<form.*>|</form>)|войти|имя пользователя|пароль|недействительный|флаг)" resp.txt -A 0
reqsH.txt
POST /login.php HTTP/2
Host: 10.129.1.15
Referer: http://10.129.1.15/
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Content-Type: application/x-www-form-urlencoded
Cookie: PHPSESSID=o56egk21rt9g72p0nml211pk2u
reqsP.txt
username=admin&password=rKXM59ESxesUFHAd
Я разобрался. Я забыл параметр “Submit” в полезной нагрузке запроса:
Username=admin&Password=rKXM59ESxesUFHAd&Submit=Login
.
Ответ или решение
Ошибка cURL при отображении кода состояния 302 после успешного входа в систему в машине Hack the Box ‘Crocodile’
Введение
При работе с cURL для выполнения запросов к веб-приложениям, пользователи иногда сталкиваются с проблемами, связанными с неадекватным получениемHTTP-кодов состояния. В данной ситуации происходит следующее: после успешного входа в систему cURL возвращает код состояния 200, тогда как ожидается код 302. Разберем причины этого поведения и предоставим рекомендации по его исправлению.
Причина проблемы
Основная причина, по которой вы не получаете ожидаемый код состояния 302, заключается в недостаточности представленных данных в запросе. Как показывает практика, большинство форм для входа в систему требуют определенных параметров, которые указывают серверу на то, что запрос должен быть обработан как успешный вход. В вашем изначальном запросе отсутствовал необходимый параметр "Submit", который обычно обозначает завершение процесса входа.
Вы использовали следующий код для передачи данных в reqsP.txt
:
username=admin&password=rKXM59ESxesUFHAd
Однако для успешной аутентификации необходимо добавить параметр "Submit":
username=admin&password=rKXM59ESxesUFHAd&Submit=Login
Рекомендации по исправлению
Для исправления данной проблемы, выполните следующие шаги:
-
Обновите запрос: Добавьте недостающий параметр "Submit" в файл данных
reqsP.txt
. Ваш новый запрос должен выглядеть так:username=admin&password=rKXM59ESxesUFHAd&Submit=Login
-
Проверьте заголовки: Убедитесь, что все необходимые заголовки указаны корректно. В вашем примере заголовок
Cookie
может потребовать обновления после успешного входа, если сессия изменяется. -
Обратите внимание на редиректы: Если вы ожидаете, что после успешного входа пользователь будет перенаправлен на другую страницу, вам нужно убедиться, что cURL следует за редиректами. Добавьте флаг
-L
к вашему запросу:curl -X POST "http://10.129.1.15/login.php" -H '@reqsH.txt' -d '@reqsP.txt' --compressed -i -s -L > resp.txt
-
Логирование: Используйте параметр
-v
для включения режима отладки cURL, чтобы увидеть, какие именно запросы и ответы обрабатываются. Это поможет выявить любые проблемы на этапе передачи данных.
Заключение
Проблема с получением кода состояния 200 вместо 302 могла быть вызвана недостающими параметрами в запросе на вход. Убедитесь, что вы передаете все необходимые данные, такие как "Submit", и используйте флаг для обработки редиректов при работе с cURL. Следуя этим рекомендациям, вы сможете успешно решить проблему и получать ожидаемый ответ от сервера.
Помните, точная передача параметров и внимание к деталям в запросах — это ключ к успешной аутентификации и взаимодействию с веб-приложениями.