Есть ли способ извлечь содержимое приложения / потока октетов из HTTP-ответа application / json? - PullRequest
0 голосов
/ 04 октября 2019

Предположим, что существует сервер, скажем, WebServer, который получает параметр GET "url" и загружает данные с URL-адреса, который мы передаем ему. Он посещает URL-адрес и извлекает его содержимое (в основном HTML) и возвращает его в кодированном формате application / json. Вот так:

{"response: "200 OK", "body": "<html>hello</html>"}

Теперь я пытаюсь посетить URL внутреннего сервера, который обслуживает ZIP-файл. Например:

https://web.server/download?url=https://internal.server/files/abc.zip

Возвращаемое содержимое - application / octet-stream (двоичный файл ZIP из https://internal.server), закодированный как application / json. Выглядит примерно так:

{"response: "200 OK", "body":"PK\u0003\u0004\n\u0000\u0000\u0000\b\u0000�jCO\u0012[\u001du�\u0000\u0000\u0000�\u0000\u0000\u0000\r\u0000\t\u0000.editorc [..snip..]}

Есть ли в любом случае JSON декодировать вышеуказанные данные и извлечь из него двоичный файл application / octet-stream.

Я пробовал с jq -r .body response.json, но zip-файл поврежден.

jq -c '.body | fromjson' возвращает

jq: error (at randomzip2.txt:1): Invalid numeric literal at line 2, column 0 (while parsing 'PK')

Любая помощь в чистом извлечении двоичного файла высоко ценится. Спасибо.

PS: Я делаю тест на проникновение для компании, которая позволила мне выполнять такие операции. Никаких злонамеренных намерений при загрузке содержимого внутреннего файла.

...