доброго времени суток, господа. итак, мы имеем сайт, имеем куки в следующем виде: base64---рандомный хэш(?) из 40 символов с каждым обновлением страницы разный и имеем желание ломать. если сделать декод base64, выходит следующее (некоторые данные по понятным причинам замазал): Code: {"user":{"source":"new","photo":"\/avatar\/s\/аватар","activities":null,"photo_medium":"\/avatar\/m\/аватар","rating":"0","last_name":"фамилия","email":"мыло","confirm":"0","photo_big":"\/avatar\/o\/аватар","updated":"дата","about":"привет","id":"цифра","birthday":"др","comments_count":"0","gender":null,"likes_count":"0","admin":"0","location":"город","my_comments_count":"667","ban":"0","subscribe":"1","deleted":"0","actived":"время","banned_to":null,"created":"дата создания","shop":"0","hidden":"0","first_name":"имя"},"token":"уникальный токен, генерирующийся один раз при каждом входе на сайт (не меняется, пока не выйдешь) "} мы видим что тут очень много переменных, в том числе как и интересующая нас "admin: 0". казалось бы подменить и опааа. но стоит изменить любую одну букву\цифру, - как сессия становится недействительной и вылетаешь с пользователя. вот тогда ты и начинаешь думать о второй части, которая после кода base64 - этом самом хэше. сказать что он уникальный ? - нет, я повторял одну и туже (исправную) сессию много раз и всё работало, выходит - каждый раз она хоть и меняется (ключ после base64), но если повторять её, работа не слетает. сдаётся нам что ключ не такой уж и уникальный. выглядит в полном виде сессия так: Code: eyJ1c2VyIjp7InNvdXJjZSI6Im5ldyIsInBob3RvIjoiXC9hdmF0YXJcL3NcL9Cw0LLQsNGC0LDRgCIsImFjdGl2aXRpZXMiOm51bGwsInBob3RvX21lZGl1bSI6IlwvYXZhdGFyXC9tXC/QsNCy0LDRgtCw0YAiLCJyYXRpbmciOiIwIiwibGFzdF9uYW1lIjoi0YTQsNC80LjQu9C40Y8iLCJlbWFpbCI6ItC80YvQu9C+IiwiY29uZmlybSI6IjAiLCJwaG90b19iaWciOiJcL2F2YXRhclwvb1wv0LDQstCw0YLQsNGAIiwidXBkYXRlZCI6ItC00LDRgtCwIiwiYWJvdXQiOiLQv9GA0LjQstC10YIiLCJpZCI6ItGG0LjRhNGA0LAiLCJiaXJ0aGRheSI6ItC00YAiLCJjb21tZW50c19jb3VudCI6IjAiLCJnZW5kZXIiOm51bGwsImxpa2VzX2NvdW50IjoiMCIsImFkbWluIjoiMCIsImxvY2F0aW9uIjoi0LPQvtGA0L7QtCIsIm15X2NvbW1lbnRzX2NvdW50IjoiMjIiLCJiYW4iOiIwIiwic3Vic2NyaWJlIjoiMSIsImRlbGV0ZWQiOiIwIiwiYWN0aXZlZCI6ItCy0YDQtdC80Y8iLCJiYW5uZWRfdG8iOm51bGwsImNyZWF0ZWQiOiLQtNCw0YLQsCDRgdC+0LfQtNCw0L3QuNGPIiwic2hvcCI6IjAiLCJoaWRkZW4iOiIwIiwiZmlyc3RfbmFtZSI6ItC40LzRjyJ9LCJ0b2tlbiI6ItGD0L3QuNC60LDQu9GM0L3Ri9C5INGC0L7QutC10L0sINCz0LXQvdC10YDQuNGA0YPRjtGJ0LjQudGB0Y8g0L7QtNC40L0g0YDQsNC3INC/0YDQuCDQutCw0LbQtNC+0Lwg0LLRhdC+0LTQtSDQvdCwINGB0LDQudGCICjQvdC1INC80LXQvdGP0LXRgtGB0Y8sINC/0L7QutCwINC90LUg0LLRi9C50LTQtdGI0YwpICJ9---ab4g8j0k4lo12vb56mn098rt5bu42cao65m23eg6 после трёх чёрточек и есть этот "хэш" из 40 символов (переменную выдумал, для примера). итак, Джентльмены, - в какую сторону думать ?
хмм.. если есть переменные, и они считываются сайтом, - выходит их можно подменить. если нельзя, - можно попробовать провести sql inj прямо через сессию на этих переменных, т.к очевидно что они обращаются к базе. в чём я не прав ?
- пап, можно я пойду поиграю ? - нет, забудь про это - но почему ? игрушки ведь есть - ты не сможешь поиграть, я тебе уже ответил из такого разряда.
Так будешь с отцом разговаривать. На сайте отсутсвует уязвимость данного рода. Чтобы её применить должен быть кривой код,а не то что ты написал исходя из своих фантазий
Понимаешь,exT1ma4ka!Что бы тут была уязвимость,надо поставить ковычку и при обновлении страницы должны быть sql ошибка,которая скажет о налиции уязвимости. То что ты делаешь вообще к уязвимостям не относится С Уважением,InDuStRieS!
ты по-моему не понимаешь в чём дело. инъекция в куки, так ? справа - ключ, слева - сама сессия в base64. ключ является проверкой сессии на корректность (отсутствие левых элементов, кавычек, итд). когда ключ не совпадает - сессия не пашет. ты говоришь о чём-то другом. ставлю вопрос так: каким алгоритмом может быть произведена проверка сессии через хэш ? 40 символов - Sha 1, но я не могу получить туже сумму при переводе чистой сессии или же base64 кода в неё. что-то тут не так.
Возможно (в самом простом случае), некоторые поля из левой части проходят объединение, и результат такой вот конкатенации обсчитывается в хэш, который является проверкой, не подкрутил ли чего юзер в куках (его мы и видим в правой части). Вся проблема - узнать, какие параметры и каким образом между собой комбинируются. Тут есть величайшее множество возможных реализаций, которые наверняка можно узнать, лишь докопавшись до исходников сайта. В самом элементарном варианте, который я описал, узнать, какие переменные используются при генерации хэша, можно так: 1. Меняем переменную, запоминаем, что поменяли. Хэш оставляем прежним. 2. Отправляем кук на сервер. 3. Вернул ошибку - переменная участвует в "формировании" хэша, нет - тестим следующую. Но здесь всё может пойти прахом (даже если мы узнаем, какие переменные проходят конкатенацию, а какие - нет), если потом они как-то модифицируются (например, между ними ставится тире, и от полученной строки считается хэш)... В общем, самый верный вариант - копать исходники, как ни крути. Если где-то сморозил глупость - сильно не бейте, просто высказал свои мысли, на практике ничем таким никогда заниматься не приходилось. Также думаю, что затея с куками слишком уж трудоёмкая, и стоит поискать более "классические" дырки типа sql-inj, инклудов или XSS'ок...
H3L1X, тесты проводились, боюсь вся строка участвует в формировании хэша. даже когда переставляешь переменные местами - всё рушится.