در این مطلب، ویدئو اکسپلویت های باینری با پایتون: تغییر مسیر اجرای | packtpub.com با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:10:27
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:01,580 –> 00:00:03,640
شما
2
00:00:05,970 –> 00:00:09,059
این ویدیو بخش سوء استفاده از آسیبپذیریهای لینوکس را
3
00:00:09,059 –> 00:00:12,500
4
00:00:12,639 –> 00:00:16,560
با اجرای تغییر مسیر شروع میکند
5
00:00:16,560 –> 00:00:19,640
، برنامهنویسی آسیبپذیر ایجاد میکند.
6
00:00:19,640 –> 00:00:23,430
مشاهده استفاده از حافظه با gdb برای
7
00:00:23,430 –> 00:00:25,560
اجرای عادی برنامه و سپس
8
00:00:25,560 –> 00:00:28,110
یک اکسپلویت سرریز بافر برای
9
00:00:28,110 –> 00:00:31,230
ایجاد یک نتیجه غیرمنتظره در اینجا یک
10
00:00:31,230 –> 00:00:34,590
برنامه ساده است که PW آزمایشی را فراخوانی میکند.
11
00:00:34,590 –> 00:00:37,170
زیر برنامه ای که یک رمز عبور را از کاربر می خواند
12
00:00:37,170 –> 00:00:39,390
و چند عملیات برگرداندن بیت را
13
00:00:39,390 –> 00:00:42,660
انجام می دهد تا تصمیم بگیرد که آیا 0 را برگرداند
14
00:00:42,660 –> 00:00:44,670
و بگوید رمز عبور صحیح است یا
15
00:00:44,670 –> 00:00:47,550
1 را برگرداند و بگوید رمز عبور
16
00:00:47,550 –> 00:00:49,860
درست نیست رمز عبور از
17
00:00:49,860 –> 00:00:52,440
کاربر با روتین get S خوانده می شود و قرار می گیرد
18
00:00:52,440 –> 00:00:54,269
به متغیری که فقط برای 10
19
00:00:54,269 –> 00:00:56,519
بایت جا دارد، بنابراین اگر بیش از 10
20
00:00:56,519 –> 00:00:59,040
بایت قرار دهید، میتوانید آن را سرریز کنید و
21
00:00:59,040 –> 00:01:01,320
کنترل ماشین
22
00:01:01,320 –> 00:01:02,850
23
00:01:02,850 –> 00:01:05,339
24
00:01:05,339 –> 00:01:07,260
را به دست بگیرید.
25
00:01:07,260 –> 00:01:10,080
و آن را با چند
26
00:01:10,080 –> 00:01:13,290
گزینه کامپایلر کامپایل کنید – G برای گنجاندن نمادها
27
00:01:13,290 –> 00:01:16,350
و اتصال آن به کد منبع –
28
00:01:16,350 –> 00:01:18,870
استاتیک برای گنجاندن lib به صورت بومی و
29
00:01:18,870 –> 00:01:20,670
– بدون بالا
30
00:01:20,670 –> 00:01:22,729
برای جلوگیری از تولید فایل های اجرایی مستقل از موقعیت،
31
00:01:22,729 –> 00:01:25,920
این یک روش قدیمی
32
00:01:25,920 –> 00:01:27,960
برای کامپایل کد است و حمله را
33
00:01:27,960 –> 00:01:30,750
ساده تر می کند، بنابراین اجرای نرمال
34
00:01:30,750 –> 00:01:32,789
برنامه از شما رمز عبور می خواهد و
35
00:01:32,789 –> 00:01:35,070
اگر اشتباه متوجه شوید با شکست مواجه می شوید اما
36
00:01:35,070 –> 00:01:37,170
اگر یک رمز عبور طولانی وارد کنید،
37
00:01:37,170 –> 00:01:39,360
پیام خطای بخش بندی را می بینید که نشان
38
00:01:39,360 –> 00:01:41,700
می دهد به نوعی از حافظه فراتر
39
00:01:41,700 –> 00:01:43,890
از حافظه موجود برای یک روال استفاده کرده اید و
40
00:01:43,890 –> 00:01:45,899
این نشان دهنده وجود یک
41
00:01:45,899 –> 00:01:48,659
آسیب پذیری است، بنابراین بیایید تا اینجا پیش برویم که
42
00:01:48,659 –> 00:01:51,109
43
00:01:51,510 –> 00:01:54,100
از طریق دستگاه کالی لینوکس خود را کنترل می کنیم.
44
00:01:54,100 –> 00:01:57,250
SSH و بنابراین ابتدا
45
00:01:57,250 –> 00:01:59,530
تصادفیسازی طرحبندی فضای آدرس را حذف
46
00:01:59,530 –> 00:02:02,170
میکنم و حالا نگاهی به کدم میاندازم که
47
00:02:02,170 –> 00:02:04,630
اینجاست، بیایید از شر رنگها خلاص شویم و شما
48
00:02:04,630 –> 00:02:06,910
در اینجا روتینی است که حاوی
49
00:02:06,910 –> 00:02:09,310
سرریز است، در اینجا متغیری با ده
50
00:02:09,310 –> 00:02:11,620
کاراکتر است و در اینجا رمز عبور را میخواند.
51
00:02:11,620 –> 00:02:13,570
کاربر بدون محدود کردن آن به ده
52
00:02:13,570 –> 00:02:16,570
کاراکتر، بنابراین اگر تمام
53
00:02:16,570 –> 00:02:18,990
فضای ذخیره سازی محلی این روال را سرریز کنید و
54
00:02:18,990 –> 00:02:21,640
نشانگر بازگشتی را هنگام اجرای این retu بازنویسی کنید.
55
00:02:21,640 –> 00:02:23,950
عبارات rn که تلاش
56
00:02:23,950 –> 00:02:26,770
می کنند به روال اصلی برگردند، در
57
00:02:26,770 –> 00:02:29,380
عوض به هر کجا که به آن می گویم هدایت
58
00:02:29,380 –> 00:02:33,530
می شود، بنابراین بیایید آن را
59
00:02:33,530 –> 00:02:36,650
در اینجا با آن سوئیچ ها کامپایل کنیم، چند اخطار دریافت می کنید،
60
00:02:36,650 –> 00:02:38,540
اما هیچ پیام خطایی دریافت نمی کنید،
61
00:02:38,540 –> 00:02:41,480
بنابراین کار می کند و
62
00:02:41,480 –> 00:02:43,819
اگر برنامه را با رمز عبور کوتاه
63
00:02:43,819 –> 00:02:46,640
اجرا کنید با شکست مواجه می شوید اما اگر آن را با
64
00:02:46,640 –> 00:02:51,620
رمز عبور طولانی اجرا کنید با خطاهای تقسیم بندی مواجه می شوید
65
00:02:51,620 –> 00:02:54,440
به طوری که این یک آسیب پذیری است و
66
00:02:54,440 –> 00:02:57,200
همیشه قابل سوء استفاده نیست اما
67
00:02:57,200 –> 00:03:00,260
اگر از gdb برای مشاهده آن در یک دیباگر استفاده کنید این آسیب پذیری قابل سوء استفاده است.
68
00:03:00,260 –> 00:03:03,350
من از
69
00:03:03,350 –> 00:03:05,810
سوئیچ منهای Q فقط برای جلوگیری از
70
00:03:05,810 –> 00:03:08,269
چاپ بنر بزرگ استفاده می کنم و شما می توانید
71
00:03:08,269 –> 00:03:10,160
کد منبع را با دستور list لیست
72
00:03:10,160 –> 00:03:12,590
کنید و آن را در C ببینید، نیازی نیست
73
00:03:12,590 –> 00:03:14,360
مستقیماً به کد اسمبلی مراجعه کنید در این
74
00:03:14,360 –> 00:03:17,090
مرحله می توانیم دستور آسیب پذیر را پیدا کنیم.
75
00:03:17,090 –> 00:03:19,550
خط شماره هشت است و
76
00:03:19,550 –> 00:03:22,220
در آن خط و جایی
77
00:03:22,220 –> 00:03:25,700
بعد از آن نقطه انفصال قرار می دهیم تا بتوانیم
78
00:03:25,700 –> 00:03:28,060
وضعیت حافظه را قبل و بعد از سرریز شدن بررسی کنیم
79
00:03:28,060 –> 00:03:30,800
تا در صورت اجرای برنامه
80
00:03:30,800 –> 00:03:33,170
در صورت انجام info regis به نقطه شکست می رسد.
81
00:03:33,170 –> 00:03:35,959
شما رجیسترها را در پردازنده خواهید دید
82
00:03:35,959 –> 00:03:38,030
و مواردی که برای
83
00:03:38,030 –> 00:03:41,810
ما مهم هستند ESP و EBP هستند، این
84
00:03:41,810 –> 00:03:43,700
ابتدای قاب پشته و
85
00:03:43,700 –> 00:03:46,100
انتهای قاب پشته است که در این مرحله
86
00:03:46,100 –> 00:03:48,170
وقتی آن را برای ساخت این اسلایدها اجرا کردم از آن
87
00:03:48,170 –> 00:03:53,060
خارج شد. 610 تا 638 اگر
88
00:03:53,060 –> 00:03:54,860
سرریز را با ادامه دادن و قرار دادن یک
89
00:03:54,860 –> 00:03:57,410
رمز عبور طولانی اجرا کنید و سپس حافظه را
90
00:03:57,410 –> 00:04:01,660
با تمرین 20 X ESP بررسی کنید، 20
91
00:04:01,660 –> 00:04:04,190
کلمه هگزادسیمال را خواهید دید که از نشانگر پشته شروع می شوند
92
00:04:04,190 –> 00:04:06,980
و می توانید قاب پشته را
93
00:04:06,980 –> 00:04:09,200
در اینجا برجسته کنید و به
94
00:04:09,200 –> 00:04:14,120
EBP 32- بروید. کلمه بیتی که از آدرس 638 شروع می شود،
95
00:04:14,120 –> 00:04:17,060
بنابراین منطقه برجسته شده حاوی
96
00:04:17,060 –> 00:04:20,410
کد تزریق شده است a b b و به همین ترتیب
97
00:04:20,410 –> 00:04:24,770
در واقع یک 41 42 HB 43 c است و
98
00:04:24,770 –> 00:04:27,050
در اینجا نشانگر دستورالعمل ذخیره شده است
99
00:04:27,050 –> 00:04:29,840
که توسط 50 و 51 رونویسی شده است،
100
00:04:29,840 –> 00:04:33,500
بنابراین حروفی هستند که من کنترل می کنم بنابراین I
101
00:04:33,500 –> 00:04:35,270
میتوانم مرز دستورالعمل توسعهیافته را
102
00:04:35,270 –> 00:04:38,570
با جایگزین کردن p p و q q و آن
103
00:04:38,570 –> 00:04:40,970
رشته تزریقی با آدرس
104
00:04:40,970 –> 00:04:43,940
کد کنترل کنم تا اجرا شود، اکنون تنها کاری که باید انجام دهم این است
105
00:04:43,940 –> 00:04:47,330
که آدرسی را برای پیدا کردن آدرسی انتخاب کنم.
106
00:04:47,330 –> 00:04:49,909
disassemble mein an d با وجود اینکه خواندن
107
00:04:49,909 –> 00:04:51,530
کد اسمبلی ممکن است کمی دشوار باشد،
108
00:04:51,530 –> 00:04:53,419
می توانید فقط به سمت راست نگاه کنید
109
00:04:53,419 –> 00:04:55,099
و نام روال ها را بخوانید.
110
00:04:55,099 –> 00:04:57,949
111
00:04:57,949 –> 00:05:00,949
112
00:05:00,949 –> 00:05:02,990
113
00:05:02,990 –> 00:05:0