Как подключить стандартный ввод к окну консоли после трубы? - PullRequest
0 голосов
/ 08 октября 2018

Я делаю один из CTF overthewire, для этого вызова необходимо отправить несколько символов, которые трудно скопировать и вставить в процесс narnia0.Внутри этого процесса выполняется системный вызов /bin/sh, но поскольку стандартный вывод xxd перенаправлен на стандартный ввод narnia0, я не могу использовать оболочку.

Как мне обойти это?Как мне присоединить narnia0 стандартный ввод к стандартному выводу моего терминала после того, как стандартный вывод xxd используется (или процесс завершается)?

Это код оболочки:

echo 3030303030303030303030303030303030303030efbeadde | xxd -r -p | ./narnia0

Редактировать

Вот краткий пример:

Example.c

#include <stdio.h>
#include <stdlib.h>

int main() {
  system("/bin/sh");
  return 0;
}

Компиляция:

gcc -o example ./example.c

Пример, иллюстрирующий проблему:

echo bla | ./example

В результате:

/bin/sh: line 1: bla: command not found

Какиеэто желаемое поведение, но после этого как мне подключить стандартный ввод к моему терминалу?

1 Ответ

0 голосов
/ 08 октября 2018

Может быть, удаление xxd из проблемы помогает?

(printf '\x30...\xef\xbe\xad\xde'; cat) | ./narnia0

В качестве альтернативы просто оставайтесь с echo:

(echo -ne '\x30...\xef\xbe\xad\xde'; cat) | ./narnia0

Редактировать : Добавлено cat для добавления ввода / вывода в последующую оболочку

...