問題タブ [execv]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
security - ExecV から bash シェルが生成されない
http://www.securitytube.net/groups?operation=view&groupId=4Ubuntu
のビデオに従って、12.04 32 ビット マシンでのバッファ オーバーフローについて学習しようとしています。現在、パート 5 に取り組んでおり、再配置可能なコードを挿入して、ExecVe を介して bash シェルを生成します。
パート 5 のビデオに示されているようにShellcode.c
、 を使用して問題なくビルドできます。gcc -mpreferred-stack-boundary=2 -o Shellcode Shellcode.c
ただし、C コードを実行すると、取得できるのはSegmentation Fault (core dumped)
. ビデオに示されているように、bash シェルが生成されません。
デモが示すように bash シェルを生成しない理由を誰か教えてもらえますか? これは、新しいバージョンのカーネルを使用しているためだと直感的にわかります (デモで何が使用されているかわかりません)。
ありがとう!
コードは次のとおりです。
c - リダイレクト演算子 '>' を execv の引数として渡すにはどうすればよいですか?
Linuxターミナルで、入力できます
execvを使用して同じことができると思いました:
ただし、このコードは「hello!」とは書きません。これが私がやりたいことです。execv と echo を使用してこれを行う別の方法はありますか?
編集:解決策として dup2 も使用してみました: #include #include #include
ただし、これでも私が望む結果は得られません。これは「こんにちは!」と書きます。ファイルに追加されますが、ファイルに既に書き込まれている他のすべてのものも上書きされます。どうすれば「こんにちは!」ということを保証できますか? ファイルの END に書き込まれますか?
ffmpeg - execv を使用して ffmpeg 取り込み rtmp ストリームを実行する方法
Linuxで次のコマンドを正常に実行できます:
しかし、次のコードでは機能しません:
誰かが理由を知っていますか?
c - C プログラムが待機ステートメントから戻らない
C プログラムを OpenVMS から Linux に移行する必要があり、サブプロセスを生成するプログラムで問題が発生しています。サブプロセスが生成されます (fork は正常に動作します) が、execve は失敗します (間違ったプログラム名が指定されているため、これは正しいことです)。
しかし、アクティブなサブプロセスの数をリセットするために、後で wait() を呼び出しますが、戻りません。ps 経由でプロセスを見ると、これ以上サブプロセスがないことがわかりますが、wait() は思ったように ECHILD を返しません。
サブプロセスがもうないことを待機コマンドに伝えるために何かしなければならないことはありますか? OpenVMS では、プログラムは正常に動作します。
ご協力ありがとうございました