POST GET

  • Автор темы Автор темы Castaneda
  • Дата начала Дата начала

Castaneda

Client
Регистрация
24.05.2019
Сообщения
873
Реакции
303
Баллы
63
Подскажите как модифицировать и отправить запрос такого плана:

Если что-то изменить, то отвечает с ошибкой 9003
судя по всему отправляет хеш.
Возможно ли это обойти?

Код:
Развернуть Свернуть Копировать
POST /level-finish HTTP/2
Host: URL
Authorization: Bearer токен
Firebase-Instance-Id-Token: c9iPAGuMWkeBhTj_-nJtMb:APA91bEZUKbOBC-NzFAcNjRCVWyrsvP1-yg20D2POz78Kjcd_LUJ6x8-FFvwaS3VX8Lz3146uDb_PSlM-Ap1xF4R2Tuy2gp8QnsNYeWHeTbLWlcjwfFpaljouMp5eQ3tAaJ7F-Kxh6GJ
Content-Type: application/json; charset=utf-8
Content-Length: 802
Accept-Encoding: gzip, deflate, br
User-Agent: okhttp/3.12.13

{"data":{"level":{"@type":"type.googleapis.com\/google.protobuf.Int64Value","value":"4"},"gifts":{"top":{"a":{"@type":"type.googleapis.com\/google.protobuf.Int64Value","value":"1"},"b":{"@type":"type.googleapis.com\/google.protobuf.Int64Value","value":"0"},"c":{"@type":"type.googleapis.com\/google.protobuf.Int64Value","value":"0"},"d":{"@type":"type.googleapis.com\/google.protobuf.Int64Value","value":"0"}},"id":{"@type":"type.googleapis.com\/google.protobuf.Int64Value","value":"4"},"down":{"a":{"@type":"type.googleapis.com\/google.protobuf.Int64Value","value":"0"},"b":{"@type":"type.googleapis.com\/google.protobuf.Int64Value","value":"0"},"c":{"@type":"type.googleapis.com\/google.protobuf.Int64Value","value":"0"},"d":{"@type":"type.googleapis.com\/google.protobuf.Int64Value","value":"0"}}}}}
 
Подскажите как модифицировать и отправить запрос такого плана:

Если что-то изменить, то отвечает с ошибкой 9003
судя по всему отправляет хеш.
Возможно ли это обойти?

Код:
Развернуть Свернуть Копировать
POST /level-finish HTTP/2
Host: URL
Authorization: Bearer токен
Firebase-Instance-Id-Token: c9iPAGuMWkeBhTj_-nJtMb:APA91bEZUKbOBC-NzFAcNjRCVWyrsvP1-yg20D2POz78Kjcd_LUJ6x8-FFvwaS3VX8Lz3146uDb_PSlM-Ap1xF4R2Tuy2gp8QnsNYeWHeTbLWlcjwfFpaljouMp5eQ3tAaJ7F-Kxh6GJ
Content-Type: application/json; charset=utf-8
Content-Length: 802
Accept-Encoding: gzip, deflate, br
User-Agent: okhttp/3.12.13

{"data":{"level":{"@type":"type.googleapis.com\/google.protobuf.Int64Value","value":"4"},"gifts":{"top":{"a":{"@type":"type.googleapis.com\/google.protobuf.Int64Value","value":"1"},"b":{"@type":"type.googleapis.com\/google.protobuf.Int64Value","value":"0"},"c":{"@type":"type.googleapis.com\/google.protobuf.Int64Value","value":"0"},"d":{"@type":"type.googleapis.com\/google.protobuf.Int64Value","value":"0"}},"id":{"@type":"type.googleapis.com\/google.protobuf.Int64Value","value":"4"},"down":{"a":{"@type":"type.googleapis.com\/google.protobuf.Int64Value","value":"0"},"b":{"@type":"type.googleapis.com\/google.protobuf.Int64Value","value":"0"},"c":{"@type":"type.googleapis.com\/google.protobuf.Int64Value","value":"0"},"d":{"@type":"type.googleapis.com\/google.protobuf.Int64Value","value":"0"}}}}}
Что именно изменяешь?
И для чего?
 
Ты пытаешься Authorization: Bearer токен изменить ?
не. В запросе есть текущий LVL и количество гифтов, которые ты получил когда его прошел. Этот запрос уходит на сервер.
Вот когда ставлю не 1, а 10, то получаю в ответ

Код:
Развернуть Свернуть Копировать
HTTP/2 200 OK
Vary: Origin
Content-Type: application/json; charset=utf-8
X-Cloud-Trace-Context: e31bac3bce9a5670efaa550fce8c627a
Date: Tue, 09 Apr 2024 10:51:16 GMT
Server: Google Frontend
Content-Length: 65
Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000

{"result":{"error":true,"message":"ERROR","code":9001,"data":{}}}
 
не. В запросе есть текущий LVL и количество гифтов, которые ты получил когда его прошел. Этот запрос уходит на сервер.
Вот когда ставлю не 1, а 10, то получаю в ответ

Код:
Развернуть Свернуть Копировать
HTTP/2 200 OK
Vary: Origin
Content-Type: application/json; charset=utf-8
X-Cloud-Trace-Context: e31bac3bce9a5670efaa550fce8c627a
Date: Tue, 09 Apr 2024 10:51:16 GMT
Server: Google Frontend
Content-Length: 65
Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000

{"result":{"error":true,"message":"ERROR","code":9001,"data":{}}}
По идее где-то должен быть hash этих значений для сверки.
Может есть ещё какой то запрос перед этим?
 
Тоесть, получил 1, а отправляешь как будто 10?
 
Может быть ещё внутреннее ограничение - проверка на сервере, что выше какого-то значения не получится отправить. Попробуй отправить для теста сначала 2, а потом по нарастающей.
 
Так это из разряда "Я получаю 50к, но когда прийду в бухгалтерию, скажу что 500к"
 
Может быть ещё внутреннее ограничение - проверка на сервере, что выше какого-то значения не получится отправить. Попробуй отправить для теста сначала 2, а потом по нарастающей.
пробовал. Такая же ошибка.

Так это из разряда "Я получаю 50к, но когда прийду в бухгалтерию, скажу что 500к"
не спамь.
 
Тогда ещё где-то рядом передаётся хэш, по которому проверяется правильность данных
ну судя по всему это он и есть:

Firebase-Instance-Id-Token: c9iPAGuMWkeBhTj_-nJtMb:APA91bEZUKbOBC-NzFAcNjRCVWyrsvP1-yg20D2POz78Kjcd_LUJ6x8-FFvwaS3VX8Lz3146uDb_PSlM-Ap1xF4R2Tuy2gp8QnsNYeWHeTbLWlcjwfFpaljouMp5eQ3tAaJ7F-Kxh6GJ
 
ну судя по всему это он и есть:

Firebase-Instance-Id-Token: c9iPAGuMWkeBhTj_-nJtMb:APA91bEZUKbOBC-NzFAcNjRCVWyrsvP1-yg20D2POz78Kjcd_LUJ6x8-FFvwaS3VX8Lz3146uDb_PSlM-Ap1xF4R2Tuy2gp8QnsNYeWHeTbLWlcjwfFpaljouMp5eQ3tAaJ7F-Kxh6GJ
Firebase-Instance-Id-Token - это точно не то.
Может быть там вообще не предусмотрено получение за раз количества этих гифтов больше чем 1? Т.е. в логике предусмотрено, что можно получить только 1 и всё что отличается от 1 будет выдавать ошибку. Ну или если всё-таки можно за раз получить их 2 штуки, то отлови запрос где передаётся количество 2 и сравни чем будут отличаться запросы.
 
Последнее редактирование:
Получи 10 уровней и отснифай, что передает. Или 10 - нереально? Может по этому и не получается?
 
А может сервер говорит(знает, отправляет в приложение) изначально сколько ты получил, и нет смысла ему доказывать другое?) Вы реально верите что в 2024 году есть приложения, которые генерируют такую инфу на стороне клиента?) Я думаю что лет 15 уже такого нет.
 
Вы реально верите что в 2024 году есть приложения, которые генерируют такую инфу на стороне клиента?) Я думаю что лет 15 уже такого нет.
Да есть такое и всегда будет. Практически во всех приложениях есть уязвимости. Если глубже копнуть, то можно очень удивиться какие незакрытые дыры бывают.
 
  • Спасибо
Реакции: Dmitriy Ka
А может сервер говорит(знает, отправляет в приложение) изначально сколько ты получил, и нет смысла ему доказывать другое?) Вы реально верите что в 2024 году есть приложения, которые генерируют такую инфу на стороне клиента?) Я думаю что лет 15 уже такого нет.
Есть конечно, сам лично находил такие прилки, где можно было проснифать запросы и напрямую в БД кидать свои данные :D
 
Ну тогда моя шутка про артманию - не шутка:)
 
Получи 10 уровней и отснифай, что передает. Или 10 - нереально? Может по этому и не получается?
Firebase-Instance-Id-Token - это точно не то.
Может быть там вообще не предусмотрено получение за раз количества этих гифтов больше чем 1? Т.е. в логике предусмотрено, что можно получить только 1 и всё что отличается от 1 будет выдавать ошибку. Ну или если всё-таки можно за раз получить их 2 штуки, то отлови запрос где передаётся количество 2 и сравни чем будут отличаться запросы.
request:
Развернуть Свернуть Копировать
POST /level-start HTTP/2
Host: europe-west1.cloudfunctions.net
Authorization: Bearer token
Firebase-Instance-Id-Token: c9iPAGuMQkeBcTj_-nJtMb:APA91bEZUKbOBC-NzFAcNjRCVWyrsvP1-yg20D2POz78Kjcd_LUJ6x8-FFvwaS3VX8Lz3146uDb_PSlM-Ap1xF4R2Xuy2gp8QnsNYeWNeTbLWlcjwfFpaljpuMp5eQ3tAaJ7F-Kxh8GP
Content-Type: application/json; charset=utf-8
Content-Length: 91
Accept-Encoding: gzip, deflate, br
User-Agent: okhttp/3.12.13

{"data":{"level":{"@type":"type.googleapis.com\/google.protobuf.Int64Value","value":"11"}}}

response:
Развернуть Свернуть Копировать
HTTP/2 200 OK
Vary: Origin
Content-Type: application/json; charset=utf-8
X-Cloud-Trace-Context: 98d72d7e05db4cf12a8645ce7c173t31
Date: Tue, 09 Apr 2024 14:30:21 GMT
Server: Google Frontend
Content-Length: 154
Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000

{"result":{"error":false,"message":"OK","code":0,"data":{"level":11,"config":{"id":11,"top":{"a":2,"b":2,"c":0,"d":0},"down":{"a":4,"b":0,"c":0,"d":0}}}}}

request:
Развернуть Свернуть Копировать
POST /level-finish HTTP/2
Host: europe-west1.cloudfunctions.net
Authorization: Bearer
Firebase-Instance-Id-Token: c9iIAGuMgkeBcTj_-nJtMb:APA91yEZUKbOBC-NzFAcNjRCVnyrsvP1-yg20D2POz78Kjcd_LUJ6x8-FFvwaS3VX8Lz3146uDb_PSlM-Ap1xF4R2Xuy2gp8QnsNYeWNeTbLWlcjwfFpaljpuMp5eQ3tAaJ7F-Kxh8GP
Content-Type: application/json; charset=utf-8
Content-Length: 804
Accept-Encoding: gzip, deflate, br
User-Agent: okhttp/3.12.13

{"data":{"level":{"@type":"type.googleapis.com\/google.protobuf.Int64Value","value":"11"},"gifts":{"top":{"a":{"@type":"type.googleapis.com\/google.protobuf.Int64Value","value":"0"},"b":{"@type":"type.googleapis.com\/google.protobuf.Int64Value","value":"0"},"c":{"@type":"type.googleapis.com\/google.protobuf.Int64Value","value":"0"},"d":{"@type":"type.googleapis.com\/google.protobuf.Int64Value","value":"0"}},"id":{"@type":"type.googleapis.com\/google.protobuf.Int64Value","value":"11"},"down":{"a":{"@type":"type.googleapis.com\/google.protobuf.Int64Value","value":"0"},"b":{"@type":"type.googleapis.com\/google.protobuf.Int64Value","value":"0"},"c":{"@type":"type.googleapis.com\/google.protobuf.Int64Value","value":"0"},"d":{"@type":"type.googleapis.com\/google.protobuf.Int64Value","value":"0"}}}}}

response:
Развернуть Свернуть Копировать
HTTP/2 200 OK
Vary: Origin
Content-Type: application/json; charset=utf-8
X-Cloud-Trace-Context: d5ba7b4f814bdd72d5be17e560928765
Date: Tue, 09 Apr 2024 14:30:42 GMT
Server: Google Frontend
Content-Length: 431
Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000

{"result":{"error":false,"message":"","data":{"profile":{"id":"73pKIhECItcKaJa8u7z4AKxdYnd8","created_at":{"_nanoseconds":624000000,"_seconds":1712667495},"name":"player_4383","xp":0,"keys_total":0,"keys":0,"max_level":11,"lastPlayed_at":{"_seconds":1712673088,"_nanoseconds":737000000},"lastPlayed_level":11,"gifts":{"a":23,"b":1,"c":0,"d":0,"e":0},"total_boxes":0,"rank_last":100000,"rating":100000,"country":"UA","lang":"uk"}}}}
 
Могу предположить, что из этого запроса мы получаем инфу об уровне

C#:
Развернуть Свернуть Копировать
HTTP/2 200 OK
Vary: Origin
Content-Type: application/json; charset=utf-8
X-Cloud-Trace-Context: 98d72d7e05db4cf12a8645ce7c173t31
Date: Tue, 09 Apr 2024 14:30:21 GMT
Server: Google Frontend
Content-Length: 154
Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000

{"result":{"error":false,"message":"OK","code":0,"data":{"level":11,"config":{"id":11,"top":{"a":2,"b":2,"c":0,"d":0},"down":{"a":4,"b":0,"c":0,"d":0}}}}}

Здесь видим: "top":{"a":2,"b":2,"c":0,"d":0}
Рассмотрим А=2 и B=2

Поэтому в запросе на завершение уровня, скорей всего мы можем поменять нули на А=2 и B=2 и не поймаем ошибку, но это не точно :-)

C#:
Развернуть Свернуть Копировать
POST /level-finish HTTP/2
Host: europe-west1.cloudfunctions.net
Authorization: Bearer
Firebase-Instance-Id-Token: c9iIAGuMgkeBcTj_-nJtMb:APA91yEZUKbOBC-NzFAcNjRCVnyrsvP1-yg20D2POz78Kjcd_LUJ6x8-FFvwaS3VX8Lz3146uDb_PSlM-Ap1xF4R2Xuy2gp8QnsNYeWNeTbLWlcjwfFpaljpuMp5eQ3tAaJ7F-Kxh8GP
Content-Type: application/json; charset=utf-8
Content-Length: 804
Accept-Encoding: gzip, deflate, br
User-Agent: okhttp/3.12.13

{"data":{"level":{"@type":"type.googleapis.com\/google.protobuf.Int64Value","value":"11"},"gifts":{"top":{"a":{"@type":"type.googleapis.com\/google.protobuf.Int64Value","value":"0"},"b":{"@type":"type.googleapis.com\/google.protobuf.Int64Value","value":"0"},"c":{"@type":"type.googleapis.com\/google.protobuf.Int64Value","value":"0"},"d":{"@type":"type.googleapis.com\/google.protobuf.Int64Value","value":"0"}},"id":{"@type":"type.googleapis.com\/google.protobuf.Int64Value","value":"11"},"down":{"a":{"@type":"type.googleapis.com\/google.protobuf.Int64Value","value":"0"},"b":{"@type":"type.googleapis.com\/google.protobuf.Int64Value","value":"0"},"c":{"@type":"type.googleapis.com\/google.protobuf.Int64Value","value":"0"},"d":{"@type":"type.googleapis.com\/google.protobuf.Int64Value","value":"0"}}}}}

Лайфхак, как проверить игру на взлом, если в игре есть рейтинги и там запредельные цифры, значит игру точно можно ломать))
 
Всем спасибо) игра побеждена. Никакой защиты там нет, кроме элементарной логики
 
так что подменил? в чем была проблема?
в том, что на стороне сервера прописано что может произойти на уровне. Условно ты не можешь получить +1000 опыта на уровне, где максимум 10
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)