Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Песочница (https://forum.antichat.xyz/forumdisplay.php?f=189)
-   -   Инъекция в JSON-RPC (https://forum.antichat.xyz/showthread.php?t=405397)

big_BRAT 03.02.2014 11:11

Добрый день, нужна помощь, существует самописный сервер который принимает команды через json-rpc v2.

Пример уязвимого кода:

PHP код:

PHP:
[
COLOR="#000000"][COLOR="#0000BB"]$userid[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]$_GET[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'userid'[/COLOR][COLOR="#007700"]];

[/
COLOR][COLOR="#0000BB"]$code[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]'{"method":"GetUser", "id":"1", "params":["$userid"]}'[/COLOR][COLOR="#007700"];[/COLOR][/COLOR

Пример запроса:

Код:

Code:
{"method":"GetUser", "id":"1", "params":["777"]}

Уязвимый параметр userid, через него формирую второй запрос на добавление пользователя, на выходе получаю такой запрос:

Пример запроса:

Код:

Code:
{"method":"GetUser", "id":"1", "params":["777"]},{"method":"AddUser", "id":"1", "params":["system"]}

Но есть проблема так как у нас сразу определено что это объект (начинается с { сервер обрабатывает только первый запрос, второй игнорирует), если бы сразу было определено что это массив объектов (начинался бы с [{), то запрос выполнился на все 100%.

Вопрос: как то можно заставить сервер выполнить второй запрос?


Время: 05:03