Название: Просто найди его
Категория: Web
Уровень: лёгкий
Ссылка на задание: https://hackerlab.pro/en/categories/web/722714c7-d357-4680-b389-44ca6a1d89ee
Баллы: 50
Reconnaissance
Первое что я увидел, так это кнопка при нажатии которой выводится "совет".Первая мысль которая меня посетила это Fuzzing Directory и запустил ffuf в фоне, а пока начал склоняться к SQL injection (Так как подумал что фразы берутся из БД), чтобы точно поставить диагноз нужно изучить как сервер вообще обрабатывает нажатие кнопки и что он передаёт. Запускаем Burp и отслеживаем запросы.
Отлично, видим что есть POST запрос с json форматом, давайте перекинем его в Repeater и попробуем привести его в нормальный вид для удобства.
Давайте разберёмся, что такое graphQL?
Кажется, я догадываюсь... Здесь GraphQL API vulnerabilities.GraphQL — это язык запросов с открытым исходным кодом для API и среда выполнения на стороне сервера. Он предоставляет строго типизированную схему для определения связей между данными, что делает API более гибкими и предсказуемыми. И он не привязан к конкретной базе данных или механизму хранения — он работает с вашим существующим кодом и данными, что упрощает развитие API с течением времени.
Exploitation
Давайте изучим полностью схему:
JSON:
{
"query": "{__schema{queryType{name}}}"
}
Из текста ошибки понимаем, что getFlag хранит в себе значение isAdmin которое может быть либо True или False, давайте установим его на true.
JSON:
{
"query":"{ getFlag(isAdmin: true)}"
}
Флаг у нас!