تحلیل مسابقه فتح پرچم فیسبوک 2019
شرکت فیسبوک در تاریخ 1 و 2 ژوئن 2019 میلادی اولین دور از مسابقات فتح پرچم خود را برگزار کرد. تا به امروز این مسابقه در وبسایت ctftime.org وزن ارزیابی 24.62 را دریافت کرده است.
شرکت فیسبوک در تاریخ 1 و 2 ژوئن 2019 میلادی اولین دور از مسابقات فتح پرچم خود را برگزار کرد. تا به امروز این مسابقه در وبسایت ctftime.org وزن ارزیابی 24.62 را دریافت کرده است. تنها 51 تیم از 1734 تیم در ارزیابی وزن این مسابقه شرکت کردهاند و امتیازهای داده شده، مغرضانه به نظر میرسد. البته دلیل این گونه ارزیابی، خود برگزارکنندگان این مسابقه بودند زیرا پس از گذشت تقریباً 35 ساعت از پایان مسابقه، هیچ نتیجهای از رتبه شرکتکنندگان، سؤالات و امتیاز آنها بر روی وبسایتctftime.org قرار نگرفت و باعث نارضایتی شرکتکنندگان شده بودند. همچنین به جای نتایج، یک لینک با اخطار وبسایت ctftimeبه برگزارکنندگان مسابقه و مهلت 5 روزه جهت اعلام نتایج وجود داشت. طبق وزن ارزیابی شده، این مسابقه از اعتبار و کیفیت پایین برگزاری و سؤالات آن برخوردار بوده اما در عمل این گونه نبوده است. |
تیم اول در این مسابقه تیم +g بود که در حال حاضر تیم دویست و نود و پنجم در ردهبندی ctftime است. لازم به ذکر است این تیم متعلق به شرکت گوگل بوده و با یک نفر شرکتکننده تیم، به صورت کاملاً برنامهریزیشده فقط در این مسابقه فتح پرچم شرکت کرده بودند و هیچ سابقهای از ایشان در مسابقات فتح پرچم وجود ندارد. این تیم پس از دستیابی به مقام اول به صورت زیرکانهای نام تیم خود را به Visit g.co/ctf تغییر دادند تا شرکتکنندگان را به مسابقه فتح پرچم گوگل در سال 2019 دعوت نمایند.تیم دوم Balsn است که رتبهی اول را در سایت ctftime دارد، همچنین تیم Plaid Parliament of Pwning )PPP) در حالی در جایگاه سوم قرار گرفت که رتبه هفتم را در سایت ctftime دارا است. |
این مسابقه در 5 دسته crypto ،misc ،pwnable ،reversing و web برگزار شد. سختترین دسته pwnable با مجموع امتیاز 5794 و راحتترین دسته آنها reversing با مجموع امتیاز 3635 بود. |
سختترین سؤال، regexicide از دسته misc بود که تنها 3 تیم در طول مسابقه توانست آن را حل کند و آسانترین سؤال، irc از دسته misc بود که توسط 1625 تیم حل شد.
|
در ادامه به مرور برخی تکنیکها و مباحث مطرح شده در این CTF میپردازیم: |
در دسته web از آسیبپذیریهای File Upload و خواندن فایلهای دلخواه در نرمافزار LibreOffice، عدم توجه به حذف فضاهای خالی در نوع دادهای char و varchar با دستور insert و تزریق بر اساس پرسوجو، جعل کوکی و (Server Side Template Injection (SSTI، تزریق SQL خارج از محدوده و unvalidated input preg_match استفاده شده بود. |
در چالشهای دسته reversing از تکنیکهای مهندسی معکوس OSX Mach-O File Format، کدگشایی Base64 و Rust Binary، اسمبلی و gnu-indirect-functions، فایل کد شده و static linked binary استفاده شده بود. |
در دسته pwnable نیز روشهای دور زدن توابع ++c و استفاده از آسیبپذیری توقف برنامه، leak_stack و leak_libc، خواندن و نوشتن روی ماژول هسته لینوکس، برنامهنویسی بازگشت گرا (ROP)، Binary و tcache-poisoning مورد توجه قرار گرفته بود. |
دسته misc هم شامل چالشهای متنوعی بود. پیدا کردن رشته پرچم در کانال چت اینترنتی، یافتن رشته پرچم در یکی از صفحات وبسایت مسابقه، نوشتن یک برنامه ping با استفاده از Thrift، دیکامپایل برنامه به زبان Elixir با استفاده از Erlang، دستکاری پرسوجوی SQL و تغییر evil bit در سرآیند پکت ارسالی از جمله سؤالات طرح شده در این دسته بود. |
از مباحثی که در طراحی سؤالات دسته crypto استفاده شده بود نیز میتوان به رمزگشایی ECDLP با استفاده از کوچک بودن مرتبه curves، تصادم AES-GCM و رمزگشایی از رمز ارزها اشاره کرد. |
جوایزی که برای مسابقات فتح پرچم فیسبوک در نظر گرفته شده بود: |
3133.7 دلار برای تیم اول، 2000 دلار برای تیم دوم و 1000 دلار برای تیم سوم. |
در توضیحات این مسابقه آمده بود: برای برخی از سؤالات ممکن است نیاز به حل با آزمون جامع (بروت فورس) باشد و سؤالات به گونهای هستند که نیاز به اسکن با ابزارهای خودکار وجود ندارد. متأسفانه این توضیحات باعث کند شدن روند اجرای مسابقه و حتی در مواردی از دسترس خارج شدن سؤالات شد. این امر شرکت فیسبوک را بر آن داشت تا در برخی از توضیح سؤالات به صورت واضح، اخطار مسدود سازی کاربر و تیم وی را در صورت اجرای آزمون جامع اعلام نمایند. همچنین یک کانال چت اینترنتی برای شرکتکنندگان در نظر گرفته شده بود که 15 الی 20 نفر به صورت شبانهروزی مدیریت آن را بر عهده داشتند. کاربران حق نشر پاسخ سؤالات و یا درخواست راهنمایی به صورت عمومی را نداشته و در صورت مشاهده مدیران، کاربر خاطی از کانال اخراج و آیپی وی مسدود میشد. |