次の状況で何が起こっているのか理解できません。UNIX パイプと UNIX にはまったく詳しくありませんが、ドキュメントを読んでも、この動作を理解できません。
./shellcode
シェルを正常に開く実行可能ファイルです。
seclab$ ./shellcode
$ exit
seclab$
./shellcode
viaにデータを渡す必要があるとしますstdin
。これは、コンソールから文字列を読み取り、"hello" とその文字列を出力するためです。私は次の方法で(パイプを使用して)それを行い、読み取りと書き込みが機能します:
seclab$ printf "world" | ./shellcode
seclab$ hello world
seclab$
ただし、新しいシェルは開かれません (または、少なくともそれを確認して操作することはできません)。実行exit
すると、システムから外れるので、新しいシェルにはなりません。
誰かがこれを解決する方法についてアドバイスできますか? バイナリ データを 2 番目のプロセスに入力する必要があるため、printf を使用する必要があり、次のように実行できます。printf "\x01\x02..."