Tôi đã thử nghiệm với tràn bộ đệm trên hệ thống FreeBSD. Là thử nghiệm đầu tiên tôi đã cố gắng để có được chương trình khai thác để bắt đầu một quá trình khác (/ bin/tên máy chủ trong trường hợp này). Tất cả đều hoạt động tốt, chương trình đã in tên máy chủ và sau đó chấm dứt. Sau đó tôi đã cố gắng để làm cho chương trình đẻ trứng một vỏ (tức là thực hiện/bin/sh). Tôi cho rằng điều này có thể được thực hiện bằng cách trao đổi chuỗi đại diện cho chương trình được gọi. Khi tôi thử chương trình khai thác này chỉ đơn giản là thoát, theo gdb nó thành công sinh ra một quá trình mới (/ bin/sh). Tuy nhiên, không có vỏ nào được sinh ra. Sau đó tôi đã thử khai thác đầu tiên của mình và chuyển tệp/bin/sh sang/bin/tên máy chủ, vẫn không thay đổi bất kỳ thứ gì. Câu hỏi của tôi bây giờ, điều gì có vẻ khác về thực thi/bin/sh từ bất kỳ lệnh nào khác?Tràn bộ đệm - Chương trình chấm dứt sau khi sinh sản một vỏ
Để tham khảo, cho nỗ lực vỏ đẻ trứng tôi đã sử dụng shellcode sau:
char code[] = "\x31\xc0\x50\x68\x2f\x2f\x73\x68"
"\x68\x2f\x62\x69\x6e\x89\xe3\x50"
"\x54\x53\xb0\x3b\x50\xcd\x80";
Điều này có thể liên quan: http://forums.freebsd.org/showthread.php?t=10054 – zxcdw
Thông tin thêm có vẻ là cần thiết, vì vậy hãy đăng mã của bạn bao gồm mã nguồn shellcode của bạn để mọi người có thể xem xét. – rumpel