تقسیم بندی – سرریز بافر 64 بیتی

در هنگام تلاش برای بازنویسی EIP (سرریز بافر 64 بیتی پایه) با یک آدرس 0x0000000000400546 مشکل وجود دارد که یک تابع است که در همان برنامه واقع شده است .. EIP در 88 بایت .. بنابراین کد من در gdb خواهد شد:

gdb> r python -c چاپ 'A' * 88 + " x46 x05 x40 x00 x00 x00 x00 x00" "

آدرس را به 0x00007fff00400546

تغییر دهید. برنامه دریافت سیگنال SIGSEGV، گسل Segmentation.
0x00007fff00400546 در ؟؟ ()

 تصویر

چرا با 7fff در وسط اصلاح شده است؟ و نحوه اشاره به این آدرس خاص؟

ubuntu – آزمایش سرریز بافر: کد پوسته اجرا شد، اما "خطای 0 بایت را نتوانستم انجام داد

من یک آزمایش سرریز بافر در یک اوبونتو 16.04 VM انجام دادم ( لینوکس اوبونتو 4.10.0-28-عمومی # 32 ~ 16.04.2-اوبونتو SMP پنجشنبه 20 ژوئن 10:19:48 UTC 2017 x86_64 x86_64 x86_64 گنو / لینوکس ) و یک اشتباه گیج کننده پس از دریافت کد پوسته اعدام شد. کد پوسته از این آموزش کپی می شود و به طور خاص " x48 x31 xf6 x48 x31 xd2 x48 xbb x2f x62 x69 x6e x2f x73 x68 x11 x48 xc1 xe3 x08 x48 xc1 xeb x08 x53 x48 xc7 xc0 x3b x11 x11 x11 x48 x89 xe7 x48 xc1 xe0 x38 x48 xc1 xe8 x38 x0f x05 ". در Edb، من می بینم RIP به کد پوسته می رود و آن را اجرا می کند، همانطور که در زیر نشان داده شده است:

edb نمایش کد پوسته اجرا شده

بعد از دستور syscall که قرار است execve پوسته، با این حال، به نظر می رسد به سیاه چاله افتاده است. Edb شروع به خالی کردن می کند، همانطور که در زیر نشان داده شده است:

edb پس از syscall

خالی می شود، و در مرحله ای که در debugger در تاریکی قرار می گیرد، پنجره خط فرمان آن خطاهای زیر را نشان می دهد:

اشتباه در پنجره edb cli

تعجب اگر کسی قبلا این را دیده است و می داند چگونه آن را حل کند؟

مهندسی معکوس – سرریز بافر در این مونتاژ کجاست؟

من یک رویداد CTF (که تمام شده است) بازی کردم و یک باینری را دیدم. هدف این است که عملکرد درست_pw بدون دانستن رمز عبور تعیین شده توسط سرور در محدوده اجرا شود. من می دانم که یک سرریز بافر وجود دارد زیرا می توانم ثبت نام ebx را سرریز کنم اما چرا؟ چرا eBx ثبت نام می کند و چه عملکرد خطرناک ایفا می کند از آنجا که تنها عملکردی که ورودی کاربر را اجرا می کند، fgets است که امن است

این تابع اصلی جداسازی شده است:

    0x0000555555554838 <+0>: push rbx
   0x0000555555554839 <+1>: اضافه کردن rsp، 0xffffffffffffff80
   0x000055555555483d <+5>: mov rdi، rsp
   0x0000555555554840 <+8>: mov ecx، 0x10
   0x0000555555554845 <+13>: mov eax، 0x0
   0x000055555555484a <+18>: نمایندگی QWORD PTR es: [rdi]، rax
   0x000055555555484d <+21>: lea rcx، [rip+0xffffffffffffffe4] # 0x555555554838 
   0x0000555555554854 <+28>: lea rdx، [rip+0xffffffffffffffc8] # 0x555555554823    0x000055555555485b <+35>: lea rsi، [rip+0xffffffffffffff98] # 0x5555555547fa    0x0000555555554862 <+42>: lea rdi، [rip+0x11e] # 0x555555554987    0x0000555555554869 <+49>: تماس 0x5555555546c0    0x000055555555486e <+54>: lea rdi، [rip+0x15b] # 0x5555555549d0    0x0000555555554875 <+61>: تماس 0x5555555546a0    0x000055555555487a <+66>: mov rbx، rsp    0x000055555555487d <+69>: mov rdx، QWORD PTR [rip+0x2007dc] # 0x555555755060    0x0000555555554884 <+76>: mov esi، 0x4cc    0x0000555555554889 <+81>: mov rdi، rbx    0x000055555555488c <+84>: تماس 0x5555555546d0    0x0000555555554891 <+89>: mov esi، 0xa    0x0000555555554896 <+94>: mov rdi، rbx    0x0000555555554899 <+97>: تماس 0x5555555546b0    0x000055555555489e <+102>: test rax، rax    0x00005555555548a1 <+105>: je 0x5555555548a6    0x00005555555548a3 <+107>: mov BYTE PTR [rax]، 0x0    0x00005555555548a6 <+110>: lea rdi، [rip+0xee] # 0x55555555499b    0x00005555555548ad <+117>: تماس 0x555555554690    0x00005555555548b2 <+122>: mov rdi، rsp    0x00005555555548b5 <+125>: mov rsi، rax    0x00005555555548b8 <+128>: تماس 0x5555555546e0    0x00005555555548bd <+133>: آزمون eax، eax    0x00005555555548bf <+135>: و غیره 0x5555555548d1    0x00005555555548c1 <+137>: تماس بگیرید 0x5555555547fa    0x00005555555548c6 <+142>: mov eax، 0x0    0x00005555555548cb <+147>: زیر rsp، 0xffffffffffffff80    0x00005555555548cf <+151>: pop rbx    0x00005555555548d0 <+152>: ret    0x00005555555548d1 <+153>: تماس 0x555555554823    0x00005555555548d6 <+158>: jmp 0x5555555548c6

من واقعا خوشحال خواهم شد اگر کسی این سرریز را برای من توضیح دهد

خطرات واقع بینانه از سرریز بافر امروزه

به نظر می رسد که سرریز بافر به عنوان رایج ترین و خطرناک ترین مشکلات امنیتی در برنامه های امروز محسوب می شود. اما من نمی فهمم چطور چرا توسعه دهندگان فقط از یافتن و جایگزینی تابع برای جایگزینی تمام پیاده سازی های نا امن از I / O با موارد ایمن استفاده نمی کنند؟

چرا شرکت های بزرگی مثل Adobe و Microsoft را فقط یک بار برای همیشه و برای همیشه رفع نمی کنند؟