教育上の理由から、Cコードを利用する必要があります
プログラムは最初にegidを設定し、次にsystem("/usr/bin/...");コマンドの脆弱性を設定します。
そこで、ホームディレクトリで「usr」を実行可能にし、ホームへのパスを設定しましたPATH=$HOME:$PATH
そして、bashのIFS変数を/に変更したいと思います。export IFS='/'
残念ながら、Cプログラムを呼び出すと、エクスプロイトが機能しません。
誰かが私に何が悪いのか教えてもらえますか?
プログラムのへの呼び出しの一部としてIFSを追加しますsystem()。システムは。を使用してコードを実行します/usr/bin/sh -c。したがって、シェルプロンプトで行うのと同じように行うことができます。
system("export IFS='/'; /usr/bin/cmd");
子プロセスが終了すると、IFSセットは親で使用できなくなることに注意してください。
私は現在同じ問題に直面しているので、私たちは同じ大学で勉強していると思います。簡単すぎるので、解決策全体を提供したくありません=)
IFS変数は無視されませんが、思ったとおりには機能しません。C-Programmを呼び出すと、シェルに追加の出力があります。これは、lesspipeを参照します。このリンク とこのドイツ語のリンクの情報を使用すると、課題を解決することができます1;)