Este es el mismo proceso que en "ejecutar cualquier comando que pase datos no confiables a comandos que interpretan argumentos como comandos" .
Tu primer comando,
bash -c "ls \$1" bash '.; echo hello'
se procesa de la siguiente manera:
bash
se ejecuta con los argumentos -c
, ls $1
, bash
, .; echo hello
. bash lee sus argumentos, anota la opción -c
con el comando ls $1
y los argumentos adicionales bash
y .; echo hello
;
cuando bash se expande ls $1
, se expande a ls
con los argumentos .;
, echo
, hello
y lo ejecuta.
El punto y coma -tendría que haber sido procesado antes de la expansión variable para hacer que bash ejecutara dos comandos diferentes.
Su segundo comando,
bash -c "eval ls \$1" bash '.; echo hello'
se procesa de la siguiente manera:
bash
se ejecuta con los argumentos -c
, eval ls $1
, bash
, .; echo hello
. bash lee sus argumentos, anota la opción -c
con el comando eval ls $1
etc.
después de la expansión se ejecuta eval
con los argumentos ls
, .;
, echo
, hello
;
eval
luego hace que los argumentos se vuelvan a analizar -, lo que resulta en la ejecución de ls.
seguida de echo hello
.
Похоже, binwalk сообщает о наличии дополнительного байта перед сжатыми данными. Игнорируйте этот байт любым удобным для вас способом.
tail -c +1 cut6 | gzip -d
Попробуйте вручную проверить подпись формата файла, например :xxd -l 4 cut6
для поиска/подтверждения формата файла. Затем перейдите с 4 (этот размер может отличаться от )байт доhttps://en.wikipedia.org/wiki/List_of_file_signatures. Вы должны получить 1F 8B
, но если нет, то ищите правильный метод сжатия и используйте соответствующий инструмент для распаковки/обработки.