![]() |
ctf tips & tricks
بسم الله الرحمن الرحيم السلام عليكم ورحمة الله تعالى و بركاته في البداية ربما ستجد الكثير من الاخطاء سوف احاول عمل تحديث كل مرة هنا CTF TIPS & TRICKS في البداية ماهي مسابقات ctf https://www.sec4ever.com/home/showthread.php?t=19843 # LFI WITH TMP FILES ## Understanding PHP temporary files في البداية https://www.php.net/manual/en/featur...ost-method.php https://www.macs.hw.ac.uk/~hwloidl/d...le-upload.html يمكننا استعمال POST و put method لرفع الملفات في بي اش بي , بعد رفع الملف , الملف سوف يحفظ في global variables يدعى $_files الاراي تحتوي على بعض المعلومات كالتالي https://h4dla3.github.io/images/2020-07-10_094131.png للمزيد من المعلومات https://arabicprogrammer.com/article/8708534101/ بعد رفع الملف سوف يخزن في default temp dir للسيرفر by default يمكنك ان تجده كالتالي في php.ini https://h4dla3.github.io/images/2020-07-10_105221.png ملاحظة انا هنا قمت بتغييره الى d:/phpstudy_pro/temp قبل التعدلي عليه كان ; upload_tmp_dir اظن في wamp c:/wamp/tmp المهم يمكنك معرفة من php.ini كالصورة اعلاه في ubuntu سوف تكون كالتالي كود:
cat /etc/php/7.0/apache2/php.ini | grep upload_tmp سوف يقوم بحفظه في system default temp dir . اذا كان upload_tmp_dir غير محدد سيتم استخدام temp directory الافتراضي للنظام sys_get_temp_dir() كود:
default كود:
➜ ~ php -r "echo sys_get_temp_dir();" بعد التحميل والتخزين في temp directory ، قواعد تسمية الملفات المؤقتة هي كما يلي: الافتراضي هو php+4 أو php+6 أرقام عشوائية وأحرف كبيرة وصغيرة مثال : كود:
php https://h4dla3.github.io/images/2020-07-10_121408.png ترى في ويندوز php????.tmp يحتوي على لاحقة tmp تحت النوافذ ، ويحتوي الملف على أربعة أحرف عشوائية linux كما نرى في لا يوجد لاحقة في Linux ، ولكن الأحرف العشوائية للملف تتكون بشكل عام من ستة أرقام ، php?????? https://h4dla3.github.io/images/2020-07-10_123241.png كما نلاحظ فانه يكون ارقام و حروف كبيرة و صغير و يكون عشوائية في ويندوز بي اتش بي يستعمل GetTempFileName() و في لينكس and mkstemp() للمزيد من المعلومات https://stackoverflow.com/questions/...-php-generated https://linux.die.net/man/3/mktemp https://linux.die.net/man/3/mkstemp https://stackoverflow.com/questions/...ame-uniqueness https://github.com/php/php-src/blob/...mporary_file.c الصورة من PHP_LFI_rfc1867_temporary_files في الصورة التالية مخطط دورة التشغيل لـ PHP عند رفع الملفات من خلال POST. https://h4dla3.github.io/images/2020-07-10_110539.png يمكنك أن ترى أن فترة بقاء ملفاتنا المؤقتة هي الفترة الزمنية كالتالي https://h4dla3.github.io/images/2020-07-10_1105391.png لو انه php انتهى بدون مشاكل و الملف لم ينقل الى مكان اخر او اعادة تسميته سيتم حذف الملف في نهاية form request ### انتباه ولكن لو انه لم ينتهي بشكل غير طبيعي أثناء تشغيل php مثل حدوث crash فانه سيتم الاحتفاظ بهذا الملف المؤقت بشكل دائم. ## كيفية الحصول على اسم الملف 1 - لدينا lfi و عرفنا كيفية التسمية للملفات المؤقة يمكننا عمل تخمين على اسم الملف يمكن استعمال سكربت لعمل تخمين 2 - تتمثل الطريقة في الحصول من خلال /proc/self/fd/* ، يبدأ * من 10 ، ويتم هنا الحصول على بعض الروابط الرمزية لمعرف العملية قيد التشغيل حاليًا. تعتمد فعالية هذه الطريقة على حجم الملف الذي تم تحميله ، ويمكن أن تزيد الملفات الكبيرة من وقت المحاولة. 3 - في ويندوز . يمكنك استعمال FindFirstFile method للمزيد من المعلومات يمكنك دراسة السورس الخاص ب fimap او البحث في قوقل https://github.com/kurobeats/fimap/w...rstFileExploit ## Exploiting time الان بعد معرفة بعض الاساسيات ننتقل الى الشرح ## LFI With PHPInfo Assistance https://insomniasec.com/cdn-assets/L...Assistance.pdf http://gynvael.coldwind.pl/download....rary_files.pdf فل نقل انه هناك local file include لكنك لم واجهت الكثير من الفلترة .... و لكنه يوجد phpinfo() script لدينا المثال التالي كود:
index.php كود:
info.php https://h4dla3.github.io/images/2020-07-09_214428.png https://h4dla3.github.io/images/2020-07-09_214614.png من خلال محاولة اجراء عدة upload post لل phpinfo سكريبت والتحكم بعناية في القراءات ، فمن الممكن استرداد اسم الملف المؤقت وتقديم طلب إلى البرنامج النصي LFI إذا تمكنا من إنشاء ملف كبير بما فيه الكفاية مع كود php ، يجب أن نكون قادرين على التقاط هذه التعليمات قبل حذف الملف ، وبالتالي race condition. يمكنك استعمال السكربت التالي كود:
python كود:
bash كما نلاحظ في الصورة انه قام بانشاء ملف يدعى ccc وقام بالتعديل عليه لكنه لم يقم بحذفه الان نذهب الى المتصفح و نجرب https://h4dla3.github.io/images/2020-07-10_154005.png ctf challenge : https://h4dla3.github.io/post/eagle-jump/ اقرا الجزء الثاني من التحدي docker container : https://github.com/vulhub/vulhub/tre.../php/inclusion ## ( php7 segment fault ) using php://filter/string.strip_tags https://bugs.php.net/bug.php?id=75535 شروط الاستخدام اصدارات php التالية php7.0.0-7.1.2 php7.1.3-7.2.1 php7.2.2-7.2.8 هناك ثغرة lfi يمكننا استعمال php://filter/string.strip_tags لجعل php يعمل crash اذا تم رفع ملف في نفس الوقت (يعني وقت حدوث الكراش) سيتم حفظ الملف المؤقت في upload_tmp_dir directory المحدد ، لذلك لن يتم حذفه ، وسيتم تخزينه دائمًا في الدليل المؤقت للخدمة. segment fault سبب حدوث الكراش null pointer refernce . `atoi(NULL)` مثال هنا الاصدار لم يحدث شيء https://h4dla3.github.io/images/2020-07-10_173120.png هنا حدث crash https://h4dla3.github.io/images/2020-07-10_173327.png الان نرى كود:
php الان نجرب في browser سوف نحصل على شيء مثل هذا https://h4dla3.github.io/images/2020-07-10_172649.png من التحدي السابق فسنرى انه يقوم بحذف الملف دائما كما قمنا بالشرح فوق https://h4dla3.github.io/images/2020-07-10_153338.png https://h4dla3.github.io/images/2020-07-10_1105391.png نجرب الان نجرب نحمل اي ملف كود:
mtucx.txt لو نرى هنا اين انا اضع رقم 2 فاننا نرى لم يقم بحذف الملف المؤقت بسبب crash كما قلنا في الشرح فوق نجرب https://h4dla3.github.io/images/2020-07-10_174402.png تمام هنا انا عرف اسم tmp filename اذا لم نكن نعرف يمكننا ان نعمل تخمين على الملف يمكنك عمل سركبت لعمل ذلك او يمكنك استعمال burp wfuzz gobuster dirbuster ... etc في البداية نجرب نرسل الكثير من الريكوست يمكنك عمل سكربت لذلك https://h4dla3.github.io/images/2020-07-10_200751.png ارسل اكثر لتزيد فرص و سرعة التخمين المهم ارجو ان تكون فهمت مقصودي python script كود:
python انا لا استعمل burpsuite في معظم الاحيان لكن بما ان كل الناس تستعملها اردت الشرح عليها https://h4dla3.github.io/images/2020-07-10_200156.png راجع الجزء الخاص بالتسمية فوق بعد بضع ساعات او اشهر او اعوام .... https://h4dla3.github.io/images/2020-07-10_204834.png # الان ناتي الى مثال ctf في البداية نعمل fuzzخفيف https://h4dla3.github.io/images/2020-07-10_191555.png وجدنا انه هناك ملف dir.php سنعود اليه لاحقا نرى السورس الخاص بالصفحة https://h4dla3.github.io/images/2020-07-10_191636.png نرى انه هناك اذا md5 للسيكرت و الاسم == الباسوورد pass=md5(??)& نلاحظ ان هناك هاش في الكوكيز باسم هاش https://h4dla3.github.io/images/2020-07-10_191803.png نرى الطول كود:
bash 32 كما نعرف 32 == md5 نجرب https://h4dla3.github.io/images/2020-07-10_192103.png نلاحظ انه يعمل تحويل redirect للصفحة flflflflfag.php نجرب نراها https://h4dla3.github.io/images/2020-07-10_192159.png اذا هناك lfi واضحة هنا نجرب php://filter/convret.base64-encode/resource= كود:
ttp://61da71ac-e4d7-4eac-96c2-58cbde529147.node3.buuoj.cn/flflflflag.php?file=php://filter/convert.base64-encode/resource=flflflflag.php نقوم بعمل decode ل base64 كود:
php لا يمكننا استعمال data .... و dir.php يقوم باظهار الملفات الموجودة في tmp directory https://h4dla3.github.io/images/2020-07-10_191736.png نجرب ما تعلمناه https://h4dla3.github.io/images/2020-07-10_192525.png تمام نجرب https://h4dla3.github.io/images/2020-07-10_192556.png نرى dir.php الان https://h4dla3.github.io/images/2020-07-10_192654.png نعمل include للملف https://h4dla3.github.io/images/2020-07-10_192727.png نرى disable function كود:
disable_functions pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,system,exec,shell_exec,popen,proc_open,passthru,symlink,link,syslog,imap_open,ld,mail,scadnir,readfile,show_source,fpassthru,readdir https://h4dla3.github.io/images/2020-07-10_192923.png https://h4dla3.github.io/images/2020-07-10_193037.png المهم الفلاق موجود https://h4dla3.github.io/images/2020-07-10_193822.png ## 3 ( convert.quoted-printable-encode ) جاري الكتابة اذا اردت اضافة شيء تفضل ... |
رد: ctf tips & tricks
الحماية للأبد -Security 4 Ever - الرد على المشاركة
<a href="http://www.gyq35537oi4m353pz69j53ar4tua0k5ms.org/">awghvlydwj</a> wghvlydwj http://www.gyq35537oi4m353pz69j53ar4tua0k5ms.org/ uwghvlydwj |
ط±ط¯: ctf tips & tricks
thanks for the help in this question.
|
الساعة الآن 07:52 PM |
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.