ذكاء البيانات التوليدية

كسر تحدي SANS Holiday Hack لعام 2023

التاريخ:

غارق في الذكاء الاصطناعي والمخاطر الأمنية لاستخدامه، تحدي SANS Holiday Hack لعام 2023 لقد كانت تجربة غنية للتنقل عبر سلسلة من 21 هدفًا اختبرت ووسعت مهارات الأمن السيبراني المتعددة.

كانت أفضل التحديات التي واجهتني هي تعقب هلوسة الذكاء الاصطناعي في تقرير اختباري، وتصعيد الامتيازات على نظام Linux، والبحث عن الغش في ألعاب Game Boy، واستخدام Azure REST API للبحث عن الكود المصدري لتطبيق Azure Function وفي النهاية استغلال الثغرة الأمنية. خدمة شهادة SSH، وممارسة استخدام إمباكيت مجموعة الأدوات و سيرتيبي لاستغلال الضعفاء خدمات شهادة الدليل النشطواستغلال ثغرات حقن SQL وإلغاء تسلسل Java في التطبيقات الفضائية.

وفيما يلي، أشارككم المسار الذي اتبعته للتغلب على بعض أبرز التحديات.

مراسل

الشكل-1-جزيرة-الكريسماس-استراحة رودولف

ChatNPT، وهو نموذج لغة كبير (LLM) يستخدم لإنشاء بعض التحديات، أنشأ ملفًا تقرير اختبار الاختراق حول نقاط الضعف المكتشفة في شبكة North Pole Systems، والتي يظهر بعضها كجزء من التحديات القادمة. ومع ذلك، قام موقع ChatNPT بالهلوسة ببعض التفاصيل الواردة في التقرير. باستخدام ChatGPT، أو برنامج LLM مفضل آخر، كانت المهمة هي وضع علامة على الأقسام التي تحتوي على معلومات مهلوسة. كان النهج الذي اتبعته هو طرح أسئلة محددة على ChatGPT حول المحتوى لشرح ما لم أفهمه في البداية، وفي النهاية لاكتشاف الحالات الشاذة. ثلاثة من الأقسام التسعة تحتوي على أخطاء.

الشكل-2-المراسل-3

كما أكد ChatGPT، يحتوي هذا القسم على رقم منفذ غير صالح وهو 88,555، وهو أعلى بكثير من أعلى رقم منفذ صالح وهو 65,535:

الشكل-3-المراسل-3-الإجابة على ChatGPT

الشكل-4-المراسل-6

هنا لاحظت على الفور أن SEND ليس طريقة طلب HTTP.

الشكل-5-المراسل-6-الإجابة على ChatGPT

الشكل-6-المراسل-9

لقد خلط ChatNPT بين رقم إصدار PHP المذكور في القسم الثامن من التقرير إما كإصدار بروتوكول HTTP أو كنص خاطئ لما كان ينبغي أن يكون "طلب HTTP HEAD" في هذا القسم. بالإضافة إلى ذلك، يعد الكشف عن تسجيل Windows أو مفاتيح المنتج في رأس الموقع نصيحة سيئة.

الشكل-7-المراسل-9-الإجابة على ChatGPT

Linux PrivEsc

الشكل-8-جزيرة-غير الأكفاء-ألعاب-النعام-صالون

في هذا التحدي، كان الهدف النهائي هو الإجابة على سؤال ولكن هذا السؤال كان مخفيًا في ملف قابل للتنفيذ لا يمكن الوصول إليه:

سؤال

بينما هناك أساليب مختلفة لتصعيد الامتيازات على جهاز Linux، سمح هذا التحدي بملف قابل للتنفيذ مخصص يسمى com.simplecopy مع تعيين بت SUID ليتم إساءة استخدامه. إذا تم تعيين بت SUID لمالك الملف وكان المالك كذلك جذر، فسيتم تنفيذ هذا الملف دائمًا بامتيازات الجذر حتى بواسطة المستخدمين غير الجذر على النظام. لقد استخدمت الأمر التالي للبحث في النظام بأكمله عن الملفات العادية التي تم تعيين بت SUID للمالك، مع تجاهل أي إخراج خطأ:

الشكل نسخة بسيطة

com.simplecopy يبدو أنها نسخة ضعيفة، ولكنها مبسطة، من المعيار cp جدوى. في الواقع اقترحت رسالة المساعدة نفس الشيء:

الاستخدام: نسخة بسيطة

كان النهج الذي اتبعته هو ما يلي: إنشاء المعلومات لمستخدم يتمتع بامتيازات الجذر، وإلحاق هذه المعلومات بنسخة من ملف / الخ / باسود الملف، ثم استبدال القديم باسود الملف مع النسخة. التالي، استخدم su لتسجيل الدخول كمستخدم جديد.

ومع وصول الجذر إلى النظام، تمكنت من العثور على الملف القابل للتنفيذ com.runmetoanswer في /جذر، قم بتشغيله وتخمين الإجابة: سانتا.

الرقم تشغيل لي للإجابة

تم تقديم الإجابة أيضًا في ملف التكوين /etc/runtoanswer.yamlولكن لا يمكن قراءة هذا الملف إلا بامتيازات الجذر أو باستخدام com.simplecopy لنسخه إلى / ديف / stdout.

خراطيش اللعبة: المجلد 2 والمجلد 3

الشكل-10-Game-Cartridge-Vol2

يتضمن التحديان الهندسة العكسية الخفيفة لملفات Game Boy ROM. الأولى كانت لعبة حيث كان الهدف هو تجاوز الحارس، والكشف عن البوابة، وفك تشفير إجابة موجة الأثير. لقد حصلنا على نسختين من اللعبة مع تلميح لإلقاء نظرة على فرق بينهم. كان نسخ عدد قليل من البايتات السداسية المختلفة من إصدار إلى آخر كافيًا للكشف عن البوابة، مما أدى إلى غرفة بها راديو يبث الإجابة بشفرة مورس:

رمز مورس

دا دا ديت

دي دا دي ديت

دا دا دا دا داه

دي دا ديت

 

دا-دي-دا-داه

الرسالة

g

l

0

r

 

y

والثانية كانت لعبة يمكنك من خلالها كسب النقاط من خلال القفز لجمع العملات المعدنية؛ ومع ذلك، فإن الحصول على أكثر من 998 نقطة سيؤدي إلى تحويل نقاطك إلى 0، وفي ظل ظروف معينة، يؤدي إلى ظهور رسالة حول وجود خطأ تجاوز. كان الهدف هو الكشف عن الخطوات العائمة للجزء التالي من الخريطة حيث تم تخزين العلم، ولكن هذا يتطلب مهارة في القفز. وبدلاً من ذلك، اكتشفت كيفية الطيران بمساعدة محاكي لعبة BGB Game Boy ومزيج من وظيفة البحث عن الغش والفحص البصري لذاكرة الوصول العشوائي (RAM) أثناء اللعب للعثور على البايت السداسي الذي يتحكم في موضع اللاعب على الخريطة - بشكل أساسي، لقد توصلت إلى خبير في اللعبة رمز.

كان العلم !توم + قزم!.

شهادة SSHenanigans

على الرغم من أن استخدام الشهادات بدلاً من أزواج المفاتيح العامة والخاصة يحسن أمان المصادقة عبر SSH، إلا أن خدمة توقيع شهادة SSH التي تم تكوينها بشكل خاطئ قد تسمح للمهاجم بالحصول على شهادة بشكل غير قانوني للمصادقة كمستخدم آخر. تم إعداد التحدي بالطريقة التالية.

An وظيفة Azure تم نشر التطبيق على Northpole-SSH-certs-fa.azurewebsites.net تقوم بإرجاع شهادات SSH إلى أي شخص يوفر مفتاح SSH العام. يمكن استخدام هذه الشهادات للمصادقة عبر SSH ssh-server-vm.santaworkshopgeeseislands.org كمستخدم مراقب.

المضيف في هذا المجال هو جهاز Azure الظاهري، لذلك بعد تسجيل الدخول كانت خطوتي الأولى هي جمع المعلومات من بيانات تعريف المثيل حيث سيكون ذلك ضروريًا للمكالمات إلى Azure REST API لاحقًا، وعلى وجه التحديد، كنت بحاجة إلى معرف الاشتراك واسم مجموعة الموارد. كنت بحاجة أيضًا إلى رمز وصول لاستخدام واجهة برمجة التطبيقات هذه، والتي تمكنت من الحصول عليها من خلالها باستخدام الهوية المدارة. يجب بعد ذلك استخدام هذا الرمز المميز الذي تم الحصول عليه في رأس تفويض HTTP عند إجراء مكالمات إلى Azure REST API.

في هذه المرحلة، كان لدي كل ما يلزم لإجراء استدعاء API الحصول على تكوين التحكم بالمصدر من تطبيق Azure Function. لقد أجريت المكالمة ومن بين خصائص التكوين وجدت عنوان URL لملف الكود المصدري للتطبيق على GitHub.

كشف فحص الكود المصدري أن التطبيق يقبل معلمة ثانية: ناظر. إذا كان طلب HTTP POST إلى /api/create-cert نقطة النهاية لا ترسل قيمة ناظر، ثم افتراضي قزم تم إرجاعها، ولكن هنا تكمن ثغرة أمنية. استخدام جناح Burp يمكنني اعتراض طلب HTTP POST وإدراج القيمة مشرف. كنت أعرف أن أطلب مشرف لأنه كان الرئيسي في /etc/ssh/auth_principals/alabaster الملف الموجود على الجهاز الظاهري وأردت الوصول إلى الدليل الرئيسي لـ Alabaster.

الشكل-12-الشهادة-SSHenanigans-الحل

مع وجود شهادة SSH لمدير المشرف في يدي، قمت بتسجيل الدخول إلى نفس الجهاز الظاهري الذي قمت بتسجيل الدخول إليه مرمر ووجد قائمة المهام الخاصة بـ Alabaster في الدليل الرئيسي الخاص به. تحتوي القائمة على كلمة العلم: خبز الزنجبيل.

نشط الدليل

بدءًا من نفس الجهاز الظاهري مثل التحدي السابق، نظر هذا التحدي في كيفية تكوين خطأ خدمة شهادة الدليل النشط يمكن إساءة استخدامها من قبل مهاجم للمصادقة كمستخدم آخر. مثل مرمر كان لدي دليل مليء بـ إمباكيت الأدوات ولكن معظمها يتطلب اسم مجال الخادم المستهدف وعنوان IP واسم المستخدم وكلمة المرور لتسجيل الدخول - وهي معلومات لم أحصل عليها بعد.

لذا كانت الخطوة الأولى الجيدة هي معرفة الأذونات الخاصة بي لـ Azure REST API حيث ليست هناك حاجة للاتصال بواجهة برمجة تطبيقات واحدة تلو الأخرى فقط لتلبية رسالة رفض الترخيص. وهكذا، أنا سرد كافة الأذونات لمجموعة الموارد الذي اكتشفته في التحدي السابق.

منذ أن رأيت أن لدي العديد من الأذونات حول قراءة خزائن المفاتيح، انتقلت إلى إدراجهم ووجدت اثنين: Northpole-IT-KV و Northpole-SSH-certs-kv.

حان الوقت لتبديل واجهات برمجة التطبيقات. حتى الآن كنت أقوم بإجراء مكالمات إلى نقاط النهاية Management.azure.com ولكن بعض أجزاء Azure Key Vault قيد التشغيل vault.azure.net ويتطلب هذا المورد رمز الوصول الخاص به. مرة أخرى استخدمت بلدي الهوية المدارة للحصول على رمز الوصول ولكن هذه المرة تحويل المورد إلى vault.azure.net.

In Northpole-IT-KV، I وجدت اسم سرا. باستخدام هذا الاسم، I طلبت قيمة هذا السر، والذي تبين أنه برنامج PowerShell النصي لـ إنشاء مستخدم Active Directory تسمى قزم. والأهم من ذلك، أنني حصلت الآن على جميع المعلومات اللازمة للاستفادة من مجموعة أدوات Impacket.

باستخدام GetADUsers.py كشف عن مستخدم آخر في المجال قد يكون محل اهتمام: com.wombleycube. لقد تمكنت أيضًا من الاتصال عبر SMB بخادم Active Directory باستخدام smbclient.py. تحتوي حصة الملف ذات الاهتمام على أ super_secret_research الدليل ولكن لم أتمكن من قراءته باسم قزم.

ولحسن الحظ، تمكنت من الوصول إلى أداة أخرى: سيرتيبي. يتم استخدام هذا للعثور على قوالب الشهادات التي تم تكوينها بشكل خاطئ لخدمات شهادات Active Directory وإساءة استخدامها. أدرجت الأداة قالبًا واحدًا ضعيفًا نظرًا لأنها تسمح لطالب الشهادة بتقديم نموذج تعسفي اسم بديل للموضوع والشهادة الصادرة التي تمنح العميل المصادقة على الاسم المقدم.

الشكل-13-حل-الدليل النشط-1

بعد طلب الشهادة مع com.wombleycube تم إدراجه في حقل الاسم البديل للموضوع، واستخدمت أيضًا Certipy للحصول على تجزئة NT لـ com.wombleycube باستخدام تلك الشهادة. ثم، عن طريق تمرير تجزئة Wombley إلى smbclient.py، لقد تمكنت من الاتصال عبر SMB بخادم Active Directory كـ com.wombleycube والوصول إلى super_secret_research الدليل الذي يحتوي على تعليمات التحدي التالي في تعليمات لإدخال القمر الصناعيGroundStation.txt.

الشكل-14-حل-الدليل النشط-2

مكبر صوت للوصول إلى باب جزيرة الفضاء

الشكل-15-جزيرة-الفضاء-المطار-نقطة

للوصول إلى التحديات في النظام الفضائي قطعة الأرض، كان مطلوبًا استخدام LLM لإنشاء صوت مزيف لـ Wombley Cube يتحدث عبارة المرور. نظرًا لوجود ملف صوتي لـ Wombley يحكي قصة وعبارة المرور، كان استخدامه تافهًا لوفو AI لإنشاء صوت يحاكي صوت Wombley لنطق عبارة المرور والمصادقة بنجاح.

بدون ضمانات إضافية، تواجه المصادقة الصوتية تحديات خطيرة كآلية أمنية في عصر ماجستير إدارة الأعمال.

الوصول إلى الكاميرا

الشكل-16-جزيرة الفضاء-زينيث-SGS

بعد أن نطقت عبارة المرور، استقلت قطارًا نقلني بعيدًا إلى الجزء الأرضي المسؤول عن التواصل مع أحد الأشخاص داخل اللعبة. كيوبسات، وهو نوع من الأقمار الصناعية الصغيرة. في المحطة الأرضية حصلنا على Wireguard التكوين لإعداد اتصال مشفر لهذا CubeSat.

البرنامج الموجود على هذا القمر الصناعي متوافق مع إطار عمل NanoSat MO (NMF)، وهو إطار برمجي طورته وكالة الفضاء الأوروبية لصالح CubeSats. يأتي هذا الإطار مع SDK لتطوير واختبار التطبيقات الفضائية. كما أنها توفر أداة اختبار المستهلك (CTT)، كتطبيق أرضي وكأداة لسطر الأوامر، للاتصال بالمشرف الموجود على متن الطائرة، وهو منسق البرامج الذي يعتني ببدء تشغيل التطبيقات الفضائية وإيقافها بالإضافة إلى تنسيق المهام الأخرى.

كان التحدي يكمن في معرفة كيفية توجيه تطبيق الكاميرا الموجود على اللوحة لالتقاط صورة، ثم استرداد اللقطة. لقد اتخذت الخطوات التالية.

بعد تشغيل واجهة CTT، قمت بإدخال URI الخاص بالمشرف للاتصال بالمشرف. ثم قمت بالتحقق من التطبيقات المتاحة، ووجدت تطبيق الكاميرا، وبدأت تشغيله. أعاد تطبيق الكاميرا عنوان URI الخاص به، والذي استخدمته للاتصال به. بعد ذلك، قمت بتنفيذ الإجراء Base64SnapImage، الذي أمر الكاميرا الموجودة على اللوحة بالتقاط صورة.

يقدم تطبيق الكاميرا أيضًا خدمة معلمات يمكنها إرجاع قيمتين: عدد اللقطات التي تم التقاطها ولقطة JPG المشفرة في base64. ومع ذلك، لا يبدو أن واجهة CTT توفر طريقة لعرض الصورة أو نسخ قيم المعلمات مباشرة من الواجهة، على الرغم من أنني تمكنت من رؤية القيمة المطلوبة كانت موجودة. لذلك كنت بحاجة إلى طريقة ملتوية للحصول على الصورة.

لقد اكتشفت أن واجهة CTT بها تمكين الجيل الزر الذي يقوم بتشغيل النشر المجدول بانتظام لقيمة المعلمة. من سطر أوامر CTT، يمكنني بعد ذلك الاشتراك في المعلمة المطلوبة، واستلام القيمة عند نشرها، وإعادة توجيهها إلى ملف.

نظرًا لأنني كنت أقوم بتشغيل CTT في حاوية Docker، قمت بنسخ الملف إلى نظام المضيف الخاص بي باستخدام عامل الإرساء cp، أزل الملف من محتوى الملف، ثم قام Base64 بفك تشفير الصورة لعرض العلامة: قهر موسم العطلات!.

الشكل-19-تطبيق الكاميرا-لقطة

تحويل الصواريخ

وكان التحدي الأخير هو استخدام نظام استهداف الصواريخ تطبيق على CubeSat داخل اللعبة لإعادة توجيه صاروخ من الأرض إلى الشمس. قدم هذا التطبيق إجراء واحد فقط: تصحيح. يبدو أن تشغيله لا يفعل الكثير باستثناء طباعة SQL VERSION الأمر ومخرجاته كما لو تم تشغيلها بواسطة قاعدة بيانات يستخدمها التطبيق:

الإصدار (): 11.2.2-MariaDB-1:11.2.2+maria~ubu2204

تساءلت على الفور عما إذا كانت هناك ثغرة أمنية في حقن SQL. توفر واجهة CTT حقلاً لإدخال وسيطة لـ تصحيح الإجراء، لذلك حاولت إدخال أمر آخر:

; عرض المنح لـ CURRENT_USER();

المنح الخاصة بـ targeter@%: منح الاستخدام على *.* إلى `targeter`@`%` تم تحديده بواسطة كلمة المرور '*41E2CFE844C8F1F375D5704992440920F11A11BA' |

منح targeter@%: GRANT SELECT، INSERT ON `missile_targeting_system`.`satellite_query` TO `targeter`@`%` |

المنح لـ targeter@%: منح الاختيار على `missile_targeting_system`.`pointing_mode` إلى `targeter`@`%` |

منح targeter@%: منح الاختيار على `missile_targeting_system`.`messaging` إلى `targeter`@`%` |

المنح الخاصة بـ targeter@%: منح الاختيار على `missile_targeting_system`.`target_coerates` إلى `targeter`@`%` |

منح targeter@%: منح التحديد على `missile_targeting_system`.`pointing_mode_to_str` TO `targeter`@`%` |

حسنًا، حان الوقت لنهب قاعدة البيانات! ال pointing_mode و pointing_mode_to_str الجداول الموضحة للمكان الذي يتجه إليه الصاروخ حاليا:

; اختر * من pointing_mode؛

المعرف: 1 | الوضع الرقمي: 0 |

; حدد * من pointing_mode_to_str؛

المعرف: 1 | الوضع الرقمي: 0 | str_mode: وضع نقطة الأرض | str_desc: عندما تكون قيمة pointing_mode 0، يقوم نظام الاستهداف بتطبيق إحداثيات الهدف على الأرض. |

المعرف: 2 | الوضع الرقمي: 1 | str_mode: وضع نقطة الشمس | str_desc: عندما تكون قيمة pointing_mode 1، يتم استهداف نقاط النظام عند الشمس، مع تجاهل الإحداثيات. |

من هذه المعلومات أدركت أنني بحاجة إلى تغيير numerical_mode القيمة في pointing_mode الجدول ل 1ولكن لم يكن لدي الإذن لتحديث هذا الجدول.

لقد حصلت على إذن لإدراج صفوف جديدة في ملف Satellite_query الجدول، والذي يحتوي حاليًا على صف واحد بقيمة غير معروفة حتى الآن في ملف موضوع العمود والكود المصدر لفئة Java يسمى الأداة المساعدة لـ SatelliteQueryFileFolder في ال النتائج العمود.

حتى هذه اللحظة كان الإخراج من تصحيح كان من السهل عرض الإجراء في الجزء الموجود أسفل الصفحة خدمة مشغل التطبيقات علامة التبويب المقدمة من المشرف في واجهة CTT. ومع ذلك، لا يبدو أن قيمة الكائن يتم عرضها بشكل صحيح في الجزء. من الناحية المثالية، سيكون من الجيد رؤية التفريغ السداسي للكائن، والذي يمكن الحصول عليه بمساعدة يريشارك أو باستخدام SQL HEX وظيفة. كشف هذا أنني كنت أتعامل مع كائن Java متسلسل.

بعد القراءة باستخدام بروتوكول تسلسل كائنات Java، تمكنت من فك تشفير البايتات السداسية:

بايت سداسي عشري

الرمز / المعنى

ملاحظة (قيم ASCII للبايتات السداسية بخط أحادي المسافة)

ACED

STREAM_MAGIC

رقم سحري.

0005

STREAM_VERSION

إصدار بروتوكول الدفق هو 2.

73

TC_OBJECT

بداية الكائن.

72

TC_CLASSDESC

بداية تعريف الطبقة.

001F

الطول

يبلغ طول اسم الفئة 31 بايت.

536174656C6C697465517
565727946696C65466F6C
6465725574696C697479

القيم

اسم الفصل هو الأداة المساعدة لـ SatelliteQueryFileFolder.

12D4F68D0EB392CB

الإصدار التسلسلي

معرف فريد مرتبط بهذه الفئة المتسلسلة.

02

SC_SERIALIZABLE

الفصل قابل للتسلسل.

0003

المجال

يحتوي الفصل على ثلاثة حقول.

5A

نوع البيانات – قيمة ASCII Z

الحقل الأول هو منطقي.

0007

الطول

يبلغ طول اسم هذا الحقل 7 بايت.

69735175657279

الاسم

اسم هذا المجال هو isQuery.

5A

نوع البيانات – قيمة ASCII Z

الحقل الثاني هو منطقي.

0008

الطول

يبلغ طول اسم هذا الحقل 8 بايت.

6973557064617465

الاسم

اسم هذا المجال هو isUpdate.

4C

نوع البيانات – قيمة ASCII L

الحقل الثالث هو كائن.

000F

الطول

يبلغ طول اسم هذا الحقل 15 بايت.

706174684F72537
46174656D656E74

الاسم

اسم هذا المجال هو pathOrStatement .

74

TC_STRING

يتم إعطاء نوع فئة هذا الكائن في سلسلة.

0012

الطول

يبلغ طول هذه السلسلة 18 بايت.

4C6A6176612F6C616E
672F537472696E673B

القيم

نوع فئة هذا الكائن هو جافا/لانج/سلسلة.

78

TC_ENDBLOCKDATA

نهاية تعريف الطبقة.

70

TC_NULL

لم يتم تحديد الطبقة الفائقة.

00

القيم

الحقل المنطقي isQuery لديه القيمة زائف.

00

القيم

الحقل المنطقي isUpdate لديه القيمة زائف.

74

TC_STRING

قيمة pathOrStatement الحقل عبارة عن سلسلة.

0029

الطول

قيمة pathOrStatement يبلغ طول الحقل 41 بايت.

2F6F70742F536174656C6
C69746551756572794669
6C65466F6C64657255746
96C6974792E6A617661

القيم

قيمة pathOrStatement الميدان هو /opt/SatelliteQueryFileFolderUtility.java

أدى الحصول على هذا الكائن عبر Wireshark إلى إرجاع رقم سحري غير صحيح و الإصدار التسلسلي، ولكن ليس عند استخدام وظيفة HEX.

لفهم ما INSERT في Satellite_query الجدول سيفي بالغرض، فقد قمت بإدراج هذا الكائن في صف جديد من الجدول واستلمت مرة أخرى نفس كود مصدر Java في ملف النتائج عمود. في الواقع، يتوافق هذا السلوك مع ما رأيته في هذا الكود باسم الحصول على النتائج وظيفة أ الأداة المساعدة لـ SatelliteQueryFileFolder موضوع.

تأخذ هذه الوظيفة مسار تنفيذ مختلفًا اعتمادًا على قيم الحقول الثلاثة للكائن: isQuery, isUpdateو pathOrStatement. اذا انااستعلام و isUpdate كاذبة، ثم تقوم الدالة بالتحقق مما إذا كان pathOrStatement هو المسار والدليل. إذا كان الأمر كذلك، فإنه يقوم بإرجاع قائمة الملفات الموجودة في الدليل؛ وإلا فإنه يفترض أنه تم توفير ملف ويحاول إرجاع محتويات هذا الملف.

من ناحية أخرى، إذا كانت قيمة isQuery وisUpdate صحيحة، فستقوم الوظيفة بتنفيذ محتوى pathOrStatement باعتباره SQL قم إفادة. ما كان علي تنفيذه هو ما يلي:

تحديث pointing_mode SET numerical_mode = 1؛

لقد قمت بتغيير البايتات الضرورية (الموضحة أدناه) في الكائن المتسلسل، وقمت بإدخال الأمر الفائز:

; أدخل في استعلام القمر الصناعي

(هدف)

  القيم

(0xACED00057372001F536174656C6C697465517565727946696C65466F6C6465725574696C69747912D4F68D0EB392CB0200035A0007697351756572795A000869735570646174654C000F706174684F7253746174656D656E747400124C6A6176612F6C616E672F537472696E673B7870010174002C55504441544520706F696E74696E675F6D6F646520534554206E756D65726963616C5F6D6F6465203D20313B)

ختامية

الشكل-20-الخاتمة

هذه ليست سوى بعض المجالات التي يغطيها تحدي SANS Holiday Hack لعام 2023؛ كان هناك العديد من الآخرين الذين نظروا إلى أمن رموز الويب JSON، تكسير كلمات المرور مع hashcatوالتكسير الافتراضي لأقفال الأمتعة و أقفال تركيبة دوارة, حقن بايثون نان، وذلك باستخدام لغة الاستعلام كوستو For الصيد بالتهديد، تدقيق سجلات DKIM وSPF للمساعدة في التعرف على رسائل البريد الإلكتروني الضارة والألعاب الصغيرة القابلة للاختراق.

بشكل عام، أنا متأكد من أن هذه المجموعة الواسعة من التحديات الممتعة لا يمكن إلا أن تكون مفيدة لأي شخص يحاول مواجهتها. وبينما أتطلع بالفعل إلى تحدي العام المقبل، فإنني أتقدم بالشكر الجزيل لمنظمي تحدي SANS Holiday Hack على وضع تحدي هذا العام.

يمكنك قراءة أبرز ما لدي من تحدي 2022 على تصدع ذلك! يسلط الضوء على KringleCon 5: الحلقات الذهبية.

بقعة_صورة

أحدث المعلومات الاستخباراتية

بقعة_صورة