در این مطلب، ویدئو اصلاح کد پایتون (PicoCTF 2022 #18 ‘patchme.py’) با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:10:36
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,640 –> 00:00:03,040
در این ویدیو ما در حال بازگشت به
2
00:00:03,040 –> 00:00:06,000
pico ctf 2022 هستیم،
3
00:00:06,000 –> 00:00:08,080
تمرین آموزش یادگیری امنیت سایبری پرچم را
4
00:00:08,080 –> 00:00:10,000
به تصویر کشید، در آخرین ویدیویی که ما مجبور شدیم
5
00:00:10,000 –> 00:00:12,320
چیزهای سرگرم کننده ای با بسته ها انجام دهیم چیزهای سرگرم کننده ای را انجام دادیم.
6
00:00:12,320 –> 00:00:15,120
7
00:00:15,120 –> 00:00:16,560
8
00:00:16,560 –> 00:00:18,000
بچه ها صبح قرار است کمی سرگرم شویم،
9
00:00:18,000 –> 00:00:20,160
امیدوارم لذت ببرید بیایید شیرجه بزنیم، بنابراین
10
00:00:20,160 –> 00:00:21,840
من اینجا در ماشین مجازی کالی لینوکس خود هستم،
11
00:00:21,840 –> 00:00:24,160
من یک ویرایشگر متن عالی
12
00:00:24,160 –> 00:00:26,160
و همچنین یک
13
00:00:26,160 –> 00:00:28,640
خط فرمان یک ترمینال با یک دایرکتوری باز دارم.
14
00:00:28,640 –> 00:00:30,560
برای pico تنظیم شده است، اما ما در
15
00:00:30,560 –> 00:00:32,960
اینجا وارد یک دسته جدید خواهیم شد یا
16
00:00:32,960 –> 00:00:34,719
حداقل یک
17
00:00:34,719 –> 00:00:37,280
18
00:00:37,280 –> 00:00:39,760
دسته بندی که قبل از دسته بندی مهندسی معکوس با چالشی به نام patchme
19
00:00:39,760 –> 00:00:42,239
dot pi برای 100 امتیاز به آن پرداخته ایم و با آن رقصیده ایم، اکنون برخی از شما
20
00:00:42,239 –> 00:00:44,160
که دارید در حال گوش دادن و تماشای
21
00:00:44,160 –> 00:00:45,760
برخی از ویدیوهای دیگر هستید که ممکن است
22
00:00:45,760 –> 00:00:48,719
تشخیص دهید که پسوند dot pi برای یک
23
00:00:48,719 –> 00:00:50,800
اسکریپت پایتون است، بنابراین ما
24
00:00:50,800 –> 00:00:52,879
احتمالاً در این ویدیو با پایتون بازی
25
00:00:52,879 –> 00:00:54,640
میکنیم، اینجا میگوید هی میتوانید پرچمی را
26
00:00:54,640 –> 00:00:56,719
که میخواهید برای اجرای این برنامه دریافت کنید. پ برنامه ython
27
00:00:56,719 –> 00:00:58,800
در همان دایرکتوری این
28
00:00:58,800 –> 00:01:00,559
پرچم رمزگذاری شده بسیار خوب است، بنابراین ما دو چیز برای
29
00:01:00,559 –> 00:01:03,440
دانلود اینجا داریم و بیایید به
30
00:01:03,440 –> 00:01:05,920
دایرکتوری برویم، اما اجازه دهید این کار را انجام دهیم، من ادامه می
31
00:01:05,920 –> 00:01:07,119
دهم و یک دایرکتوری
32
00:01:07,119 –> 00:01:08,880
برای Patch me
33
00:01:08,880 –> 00:01:09,840
pi ایجاد می کنم
34
00:01:09,840 –> 00:01:12,400
و می پریم. در آنجا و wget برای
35
00:01:12,400 –> 00:01:15,360
دانلود این فایلها خوب و آسان بسیار
36
00:01:15,360 –> 00:01:17,840
سریع تمام شد و تمام شد،
37
00:01:17,840 –> 00:01:19,600
ما این دو فایل را
38
00:01:19,600 –> 00:01:22,159
در اینجا داریم.
39
00:01:22,159 –> 00:01:24,479
40
00:01:24,479 –> 00:01:26,880
41
00:01:26,880 –> 00:01:28,799
متن عالی برای باز کردن
42
00:01:28,799 –> 00:01:30,960
کل این دایرکتوری دوره ای که نشان دهنده
43
00:01:30,960 –> 00:01:32,079
این پوشه فعلی این
44
00:01:32,079 –> 00:01:33,920
فهرست فعلی است و در واقع من را
45
00:01:33,920 –> 00:01:36,479
به صفحه خوبی می رساند که در آن می توانم هر
46
00:01:36,479 –> 00:01:40,640
دو فایل موجود در این پوشه uh را
47
00:01:40,640 –> 00:01:44,079
در اینجا ببینم اکنون متوجه flag.text inc می شوم.
48
00:01:44,079 –> 00:01:46,880
در واقع سعی میکند برخی از بایتها یا مقادیر هگزا دسیمال را نمایش دهد، اما
49
00:01:46,880 –> 00:01:49,280
50
00:01:49,280 –> 00:01:51,840
کاراکترهای غیرقابل چاپ خام یا بایتهایی که
51
00:01:51,840 –> 00:01:53,680
متن عالی معمولاً قادر
52
00:01:53,680 –> 00:01:56,000
به خواندن یا نمایش آنها نیست، اما
53
00:01:56,000 –> 00:01:57,680
آنها را بهعنوان
54
00:01:57,680 –> 00:01:59,600
رنگهای خاکستری کمتر و بزرگ نشان میدهد. مقدار ter از
55
00:01:59,600 –> 00:02:02,640
نماد هگزا دسیمال 0x است تا توجه داشته باشید هی
56
00:02:02,640 –> 00:02:04,560
به صورت هگز است و می توانید حروفی را ببینید
57
00:02:04,560 –> 00:02:06,320
که صرفاً اعداد 0
58
00:02:06,320 –> 00:02:09,520
تا 9 نیستند،
59
00:02:09,520 –> 00:02:11,680
اگر بخواهم واقعاً این را درپوش بگذارم و
60
00:02:11,680 –> 00:02:13,520
روی صفحه نمایش بدهم، از f به درستی عبور می کنیم.
61
00:02:13,520 –> 00:02:15,040
برخی از اینها به راحتی
62
00:02:15,040 –> 00:02:17,920
نمیتوانند نمایش داده شوند، بنابراین
63
00:02:17,920 –> 00:02:19,680
نمیشود اما شکافها در
64
00:02:19,680 –> 00:02:21,440
فضاها و چیزهایی را میبینید
65
00:02:21,440 –> 00:02:23,280
66
00:02:23,280 –> 00:02:25,040
که بلافاصله انگلیسی یا زبان واقعی را ایجاد
67
00:02:25,040 –> 00:02:27,440
نمیکنند، این پرچم ما نیست. به نحوی کدگذاری یا
68
00:02:27,440 –> 00:02:31,160
رمزگذاری شده است، بنابراین
69
00:02:31,160 –> 00:02:33,599
اسکریپت patchme.flag.python ما باید
70
00:02:33,599 –> 00:02:35,680
چیزی باشد که ما واقعاً بتوانیم آن را
71
00:02:35,680 –> 00:02:38,640
کاوش کنیم و برای بازیابی این
72
00:02:38,640 –> 00:02:40,640
hmm
73
00:02:40,640 –> 00:02:41,760
74
00:02:41,760 –> 00:02:44,480
75
00:02:44,480 –> 00:02:46,640
از آن استفاده کنیم، بنابراین من نظرات را در اینجا می بینم همانطور که شما مشخص کردید ما از آن هشتگ یا نماد octo thor pound
76
00:02:46,640 –> 00:02:48,480
در پایتون استفاده می کنیم. برای توجه به نظرات،
77
00:02:48,480 –> 00:02:50,000
میگوید این تابع به شما کمک نمیکند
78
00:02:50,000 –> 00:02:51,280
پرچم را پیدا کنید
79
00:02:51,280 –> 00:02:53,680
خوب به نظر میرسد که عملیات xor را
80
00:02:53,680 –> 00:02:56,400
انجام میدهد، اوه اگر آشنا نیستید،
81
00:02:56,400 –> 00:02:59,040
xor انحصاری است یا اگر
82
00:02:59,040 –> 00:03:01,200
فقط به بیتهای معمولی مانند صفر
83
00:03:01,200 –> 00:03:03,519
یا یک نگاه میکنید. اگر میخواهید یک
84
00:03:03,519 –> 00:03:05,200
صفر یا را مقایسه کنید یک
85
00:03:05,200 –> 00:03:08,239
xor به معنای خوب است آیا این چیزها
86
00:03:08,239 –> 00:03:10,800
منحصر به یکدیگر
87
00:03:10,800 –> 00:03:14,319
هستند، زیرا صفر و یک مانند
88
00:03:14,319 –> 00:03:17,040
هی متفاوت هستند، بنابراین بررسی کنید
89
00:03:17,040 –> 00:03:19,760
که آیا آنها انحصاری یکدیگر هستند
90
00:03:19,760 –> 00:03:23,200
عملیات xor که درست برمی گردند یا
91
00:03:23,200 –> 00:03:26,480
اگر آنها یک بودند همان یک و یک
92
00:03:26,480 –> 00:03:29,519
که انحصاری نیست در آنجا
93
00:03:29,519 –> 00:03:31,519
تفاوتی ندارند که در این صورت
94
00:03:31,519 –> 00:03:34,080
false را با صفر برمی گرداند،
95
00:03:34,080 –> 00:03:36,080
این همان چیزی است که شما آن
96
00:03:36,080 –> 00:03:38,640
را نه فقط یک بیت صفر یا
97
00:03:38,640 –> 00:03:41,120
یک بلکه در بین بایت ها برون یابی می کنید و می توانید کارهای جالبی انجام دهید.
98
00:03:41,120 –> 00:03:42,640
درست است اما همه
99
00:03:42,640 –> 00:03:44,000
چیز در جای خود
100
00:03:44,000 –> 00:03:45,680
مطابق با بایتی است که در کنار عملوند دیگر
101
00:03:45,680 –> 00:03:47,080
به آن نگاشت می شود
102
00:03:47,080 –> 00:03:49,120
،
103
00:03:49,120 –> 00:03:50,640
104
00:03:50,640 –> 00:03:52,799
من کار وحشتناکی را انجام دادم و توضیح دادم اما
105
00:03:52,799 –> 00:03:54,560
در حال حاضر می توانید به نوعی جادویی را
106
00:03:54,560 –> 00:03:57,200
دریافت کنید وودو را دریافت کنید که برخی عملیات برای
107
00:03:57,200 –> 00:03:59,680
دستکاری انجام می دهد و دادههایی را
108
00:03:59,680 –> 00:04:02,159
که آنها این کار را در کل رشته انجام میدهند
109
00:04:02,159 –> 00:04:04,560
بر اساس کلیدی تغییر میدهند که در نهایت
110
00:04:04,560 –> 00:04:06,640
به طول
111
00:04:06,640 –> 00:04:08,879
چیز اصلی که میخواست آن را با آن بسازد گسترش میدهد،
112
00:04:08,879 –> 00:04:10,319
زیرا دوباره باید در یک
113
00:04:10,319 –> 00:04:12,879
ردیف قرار گیرند. نباید
114
00:04:12,879 –> 00:04:14,239
نگران آن باشید، به معنای واقعی کلمه به ما میگوید که این
115
00:04:14,239 –> 00:04:16,399
تابع به شما کمک نمیکند پرچم را پیدا کنید،
116
00:04:16,399 –> 00:04:17,759
اما
117
00:04:17,759 –> 00:04:20,639
آنها فایل flag.text را باز میکنند و
118
00:04:20,639 –> 00:04:22,639
محتوایی را میخوانند که ممکن است
119
00:04:22,639 –> 00:04:24,720
در ویدیوهای قبلی دیده باشید که این کار را انجام میدهیم، حتی در
120
00:04:24,720 –> 00:04:26,479
برخی از موارد اولیه. آنهایی که برای سری هستند
121
00:04:26,479 –> 00:04:29,120
و ما یک بررسی رمز عبور سطح یک را به
122
00:04:29,120 –> 00:04:30,960
عنوان تابعی انجام می دهیم که تعریف شده است و سپس
123
00:04:30,960 –> 00:04:32,960
در اینجا در زیر فراخوانی می شود،
124
00:04:32,960 –> 00:04:35,919
از ما می خواهد لطفا رمز عبور صحیح را وارد کنید
125
00:04:35,919 –> 00:04:37,520
تا پرچم
126
00:04:37,520 –> 00:04:39,520
um بسیار خوب به
127
00:04:39,520 –> 00:04:40,880
نظر می رسد
128
00:04:40,880 –> 00:04:43,759
که مقادیر رشته را می گیرد و
129
00:04:43,759 –> 00:04:45,600
همه آنها را با این علائم مثبت به هم متصل می
130
00:04:45,600 –> 00:04:48,080
کند. بک اسلش به ما این امکان را می دهد که
131
00:04:48,080 –> 00:04:51,280
به یک خط جدید ادامه دهیم یا ادامه دهیم،
132
00:04:51,280 –> 00:04:53,919
اما خوب است اگر رمز عبور کاربر برابر
133
00:04:53,919 –> 00:04:56,479
با این باشد، اگر آنچه به عنوان ورودی ارائه می کنیم
134
00:04:56,479 –> 00:04:58,800
برابر با این باشد، می گوید به بازگشت خوش آمدید
135
00:04:58,800 –> 00:05:00,400
اینجا پرچم شماست
136
00:05:00,400 –> 00:05:03,759
و سپس پرچم را بر اساس خارج رمزگشایی می
137
00:05:03,759 –> 00:05:06,160
کند. از تابع xor با کلیدی
138
00:05:06,160 –> 00:05:07,199
به نام
139
00:05:07,199 –> 00:05:09,199
utilitarian ممکن است کلید شما متفاوت باشد
140
00:05:09,199 –> 00:05:11,039
من نمی دانم در غیر این صورت به شما می گوید سلام
141
00:05:11,039 –> 00:05:13,120
رمز عبور نادرست است
142
00:05:13,120 –> 00:05:14,000
خوب
143
00:05:14,000 –> 00:05:16,320
پس ما می توانیم با آن بازی کنیم من مطمئن هستم که
144
00:05:16,320 –> 00:05:18,080
شما می دان