На странице
Изменение типов сериализованных данных
Лаборатория
Modifying serialized data types · Apprentice
Решение
Дано
This lab uses a serialization-based session mechanism and is vulnerable to authentication bypass as a result. To solve the lab, edit the serialized object in the session cookie to access the administrator account. Then, delete the user carlos.
You can log in to your own account using the following credentials: wiener:peter
Анализ задания
Всё как в предыдущей лабе. Вот такой десериализованный объект лежит в куках:
O:4:"User":2:{s:8:"username";s:6:"wiener";s:12:"access_token";s:32:"j3yljb7ebbyibjkzd0aeqgmdlcbsh1qk";}
Эксплуатация
Чтобы забайпассить проверку access_token, воспользуемся уязвимостью в реализации сравнения строк через ==. Если передать 0, то сравнение 0 == 'строка' вернёт true.
Значит, нам надо заменить тип access_token на числовой. Итоговая нагрузка:
O:4:"User":2:{s:8:"username";s:6:"wiener";s:12:"access_token";i:0;}
Заменяем куку — увидели админ-панель. Удаляем пользователя carlos. Лаба решена!
Ещё в этой категории
Эксплуатация небезопасной десериализации через функции приложения (PortSwigger Lab)
Подмена поля `avatar_link` в объекте сессии для удаления произвольного файла через функцию удаления аккаунта.
Изменение сериализованных объектов (PortSwigger Lab)
Меняем булево поле `admin` в PHP-сериализованной куке сессии и получаем права администратора.
Web Shell Upload через обход блек-листа расширений (PortSwigger Lab)
.php в блек-листе, но .htaccess заливается без вопросов — подсовываем свой конфиг Apache и заставляем сервер исполнять shell.bug как PHP.