【发布时间】:2019-03-12 18:50:04
【问题描述】:
我正在做 overthewire 的 CTF 之一,这个挑战需要发送一些难以复制和粘贴到进程 narnia0 中的字符。在该进程中,系统调用了/bin/sh,但由于xxd 的标准输出被重定向到narnia0 的标准输入,我无法使用shell。
我该如何解决这个问题?在xxd 的标准输出被消耗(或进程结束)后,如何将narnia0 标准输入重新附加到终端的标准输出?
这是外壳代码:
echo 3030303030303030303030303030303030303030efbeadde | xxd -r -p | ./narnia0
编辑
这是一个简单的例子:
例子.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
这是期望的行为,但在那之后我如何将标准输入重新附加到我的终端?
【问题讨论】:
标签: bash shell terminal console sh