احمد رضا
احمد رضا
خواندن ۴ دقیقه·۳ سال پیش

آموزش حل CTF رمزنگاری دانشگاه شریف 1388

امروز یاشار توی چنل تلگرامش یه پست ارسال کرد که مربوط به CTF سال 1388 دانشگاه شریف بود. اون سال من بعد کلنجارهای زیاد تونستم حلش کنم ، حالا که دوباره موضوعش مطرح شده گفتم راه حلی که رفتم رو اینجا قرار بدم شاید هم برای شما تجدید خاطره بشود و هم برای کسانی که تلاش کردن و به نتیجه نرسیدن جواب مشخص شود.

از این لینک یا لینک میتونید چالش رو دریافت کنید و خودتان روش کار کنید اگر فلگ رو پیدا کردید در نظرات اعلام کنید ببینیم چند نفر پگیر بودند.

پس اگر خودتان می خواهید حل کنید از اینجا به بعد رو نخوانید تا جواب برایتان مشخص نشود.



خان اول

بعد از دانلود فایل zip و خارج کردن آن از حالت فشرده ، با عکس زیر مواجه می شویم.

مرحله اول چالش
مرحله اول چالش

تنها چیزی که در اول راه در اختیار داریم همین عکس هست ، بالا مکعب که حالت یک مکعب مرموز هست ، یک فلش داریم به سمت پایین که فعلا مشخص نیست به چه کاری می آید. اگر یکم کنجکاو باشید می دانید که در داخل فایل عکس می توانیم یک فایل zip را Embed کنیم ( لینوکس | ویندوز ) برای اینکه متوجه بشیم داخل این عکس فایل دیگه ای هست یا نه کافی هست پسوند jpg را به rar یا zip تغییر دهیم و Extract کنیم.

بعد از تعییر پسوند فایل و راست کلیک کردن روی آن می بینیم که امکان Extract وجود دارد ، این کار را انجام می دهیم در پویشه ایجاد شده به دو فایل password.jpg و unknown.rar می رسیم.

خان دوم

در این مرحله یک فایل فشرده داریم که پسورد دارد و یک فایل عکس با اسم پسورد که در زیر مشاهده می کنید:

عکس که داخل فایل فشرده Box قرار داشت
عکس که داخل فایل فشرده Box قرار داشت

مشخص هست که برای به دست آوردن پسورد فایل unknown.rar باید از این عکس استفاده کنیم، خب حالا چه طوری استفاده کنیم مهم هست!

5 تا سمبل به سر مردی که داخل عکس هست متصل شده است که می تواند سرنخ خوبی باشد ، حالا این سمبل ها چی هست ، این جا یه مقدار دانش Cryptography یا رمزنگاری نیاز هست.

اگر مطالب رمزنگاری را در ویکی پدیا مطالعه کنید به یک کلیدواژه به اسم سایفر (Cipher) برمیخورید که توضیح آن به این شکل است :

شیوه رمز نگاری به روش سایفر به این صورت است که اطلاعات متن آشکار را به رمز یا کد تبدیل می‌کند.

بعد از جست و جو در مورد سایفر به نامه ای از ادوارد لارسن می رسید که در سال 1885 با این روش رمزنگاری شده است.

نامه‌ای که در سال ۱۸۸۵ توسط ادوارد لارسن به روش سایفر رمزنگاری شده است
نامه‌ای که در سال ۱۸۸۵ توسط ادوارد لارسن به روش سایفر رمزنگاری شده است

بعد از مطالعه این نامه در انتهای آن متوجه سمبل هایی می شوید که در عکس پسورد نیز وجود دارد.

معادل عدد و سمبل ها
معادل عدد و سمبل ها

در اینجا متوجه می شویم روش رمزنگاری Mono-alphabetic است ، که با تعویض سمبل ها با معادل رمز شده عدد 82300 به دست می آید من چون سمبل دوم را بین 2 و 5 شک داشتم 85300 هم نوشتم که روی فایل فشرده تست کنم.

که شکم درست بود و عدد 85300 رمز فایل unknown.rar بود. بعد از باز کردن این فایل به دو تا عکس دیگر می رسیم.

خان سوم

من هی فکر میکردم الان دیگه تموم میشه ولی هی یک چالش جدید باز می شد :))

بعد از باز کردن فایل unknown با رمز به دست آمده به دو عکس زیر می رسیم.

دو عکس داخل unknown
دو عکس داخل unknown

عکس سمت راست با نام key.jpg و عکس سمت چپ cipher.jpg نام دارد.

عکس cipher.jpg یک سری سمبل دارد که داخل نامه نیز وجود داشت کافی هست اون ها را با معادل حروفی جایگزین کنیم تا حرف flehehxnuhogsefef به دست آید.

تا اینجا به یک عبارت نامهفوم flehehxnuhogsefef رسیدیم. با مشاهده فایل key.jpg حالت رمزنگاری Polybius Square Cipher به ذهن می رسد چون 25 خانه داریم که 26 حرف انگلیسی را در خودش جای داده است ( i و j در یک خانه هستند) ولی در این حالت ما باید نسب به هر ردیف و ستون اعدادی داشته باشیم که بتوانیم معادل آن را به دست بیاوریم.

این مرحله یه مقدار وقت گیر شد و دیگه عقلم به جایی نمیرسید که چه الگوریتمی باید به کار گرفته شود تا این حروف بی معنی رو معنی دار کنیم.

وقتی داشتم عکس هارو چک میکردم دوباره اولین عکس رو نگاه کردم و توجهم به فلش جلب شد.

اگر به عکس نگاه کنید دو تا نقطه سیاه مشاهده می‌کنید که از نقطه سیاه اول تا نقطه سیاه دوم، دو تا خانه به راست و یک‌خانه به پایین رفته است و وارد مکعب مرموز شده است ، انگار هر چیزی از این مسیر وارد آن شود رمز شده خارج می شود ، پس برای اینکه ما رمز را بشکنیم باید برعکس این مسیر عمل کنیم یعنی دو تا خانه به چپ و بالا.

برای مثال اگر ما حرف رمزنگاری شده DNSDF را داشته باشیم و برعکس این روش عمل کنیم به Ahmad می‌رسیم. کافی هست کلمات DNSDF را در عکس Key.jpg پیدا کنید و مسیر چپ‌چپ بالا را طی کنید و معادل هر حرف را پیدا کنید. D=A , N=H ,S=M ,D=A ,F=D

حالا همین الگوریتم را روی حروف flehehxnuhogsefef که پیدا کردیم پیاده‌سازی می‌کنیم و به فلگ thisiskeysubmitit می‌رسیم که جواب نهایی ما است.

سعی کردم ساده ترین روش توضیح بدهم امیدوارم استفاده کرده باشید.


رمزنگاریدانشگاه شریفctfچالش
شاید از این پست‌ها خوشتان بیاید