رفتن به مطلب
بازگشایی انجمن! ×
GuardIran

R3DN4X314

کد نویس
  • ارسال ها

    217
  • تاریخ عضویت

  • آخرین بازدید

  • روز های برد

    26

تمامی موارد ارسال شده توسط R3DN4X314

  1. سوال اول : اگه به سیستم شما نفوذ شده باشه امکان هر چیزی وجود داره ، این طرز فکر شما از نظر جرم شناسی اصولی نیست ، اهمیتی نداره که این روش های سطحی گاهی باعث تشخیص نفوذ شدن ، باید از ریشه مشگل رو تحت اسکن قرار داد ، از سطح های عمیق تر مثل نمونه ای که در پست بالا گفتم ، و یا ابزار هایی مثل TCPview سوال دوم : بله امکانش هست ، به عنوان مثال هکر ممکنه یکی از فایل های شخصی رو با یک بد افزار ادغام کرده باشه ، در این حالت وقتی شما در سیستم عامل جدید فایل رو باز میکنید مجددا سیستم جدید الوده میشه
  2. شرایطی که تو سوال اولت بود بیشتر به مشگلات سخت افزاری هارد میخوره ، یا نهایتا بعضی ویروس ها ، یا ترکیب این دوتا . حالا اینکه مثلا فرض کنیم مشگل از یه ویروس باشه و شما بعد از هک شدن بهش الوده شده باشید بحثش جداست اگه میتونی پکت هارو تحلیل کنی نرم افزار وایرشارک رو نصب کن بعد از اتصال به اینترنت تمام سیگنال های ورودی و خروجی از فیلترش رد میشن ، میتونی ببینی ارتباطات اضافی و مشکوک وجود داره یا نه سوال دوم : بله ، با فرمت و نصب مجدد سیستم عامل مشگل حل میشه سوال سوم : بله ، بستگی به چیزای مختلف داره ولی شدنیه سوال چهارم : خیر ، وقتی راه ارتباطی نباشه تبادل اطلاعات هم نیست
  3. R3DN4X314

    ورژن اپن سورس Tripwire

    خیلی مختصر : این ابزار که بیشتر برای امنیت سرور ها استفاده میشه کاربرد های جالبی داره ولی دلیل اصلی معرفیش در انجمن روت کیت های سطح کرنل هستند ، همونطور که میدونید جدا از بحث تکراری چک کردن پورت های باز به دلیل ارتباط با هکر ، شناسایی این روت کیت ها مشگلات خودش رو داره مخصوصا اگه روت کیت زیرو دی باشه این ابزار میاد از کرنل و فایل های حساس نمونه های هش میگیره و در دیتابیسش ذخیره میکنه و در بازه های زمانی هش های جدید میگیره و با هش اولیه مقایسه میکنه ، هر موقع مقدار هش جدید با مقدار اولیه برابر نبود (که در اکثر مواقع تغیرات به دلیل اضافه شدن روت کیت هستند) به مدیر سیستم اطلاع میده اولین جالبیه این روش قدیمی قابل اطمینان بودن در بازه های زمانی بیشتره ، و نکته بعدی بی اهمیت بودن خصوص بودن امضای روت کیت . نمونه اپن سورس ابزار همراه با نحوه استفادشو براتون گذاشتم : [Hidden Content]
  4. این اپشن در مواقع ضروری برای جلوگیری از لو رفتن اطلاعات کاربرد داره به این صورت که بعد از انجام کار یه Nuke Password به cryptosystem اضافه میشه که با استفاده از این پسورد همه keyslot ها پاک میشن و اطلاعات غیر قابل دستیابی میشه (حداقل توسط اکثریت) توجه داشته باشید این اپشن هنوز به طور رسمی عمومی نشده و فعلا کالی فقط به طور تلویحی معرفیش کرده ، به همین دلیل امکانش هست به مرور مشگلاتی ازش کشف بشه با دانلود پکیج cryptsetup و اعمال پچ کالی شروع میکنیم : root@kali:~# apt-get source cryptsetup root@kali:~# git clone [Hidden Content] root@kali:~# cd cryptsetup-1.6.1/ root@kali:~/cryptsetup-1.6.1# patch -p1 < ../cryptsetup-nuke-keys/cryptsetup_1.6.1+nuke_keys.diff patching file lib/libcryptsetup.h patching file lib/luks1/keymanage.c patching file lib/setup.c patching file src/cryptsetup.c root@kali:~/cryptsetup-1.6.1# dpkg-buildpackage -b -uc وقتی پکیج ساخته شد cryptsetup package رو نصب میکنیم تا اپشن Nuke پیاده سازی بشه : root@kali:~/cryptsetup-1.6.1# ls -l ../*crypt*.deb -rw-r--r-- 1 root root 149430 Jan 4 21:34 ../cryptsetup_1.6.1-1kali0_amd64.deb -rw-r--r-- 1 root root 250616 Jan 4 21:34 ../cryptsetup-bin_1.6.1-1kali0_amd64.deb -rw-r--r-- 1 root root 105226 Jan 4 21:34 ../libcryptsetup4_1.6.1-1kali0_amd64.deb -rw-r--r-- 1 root root 49580 Jan 4 21:34 ../libcryptsetup-dev_1.6.1-1kali0_amd64.deb root@kali:~/cryptsetup-1.6.1# dpkg -i ../libcryptsetup*.deb root@kali:~/cryptsetup-1.6.1# dpkg -i ../cryptsetup*.deb الان میتونیم Nuke key رو اضافه کنیم : root@kali:~# cryptsetup luksAddNuke /dev/sda5 Enter any existing passphrase: (existing passphrase) Enter new passphrase for key slot: (nuke passphrase) در هر یک از ریست های بعدی از شما یک LUKS decryption password خواسته میشه ، که با وارد کردن Nuke password دیتا از دسترس خارج میشه
  5. این فایل ها با AES-256 رمزنگاری میشن به همین دلیل با bruteforce چندان سازگاری ندارن ، باید کنار JTR از یه اسکریپت پایتون هم استفاده کنی ، که خروجیه اسکریپت میشه مقداری که باید به john بدی اسکریپت رو برات میزارم : [Hidden Content] نحوه ی استفاده از اسکریپت : /scriptdir/ ./7z2john.py archive.7z
  6. بخش دوم - قسمت نهم تا اینجا شما یاد گرفتید چجوری اسکریپت هایی بنویسید که با تمام ابجکت ها تعامل داشته باشند , اما مواقعی هستند که شما نیاز دارید اسکریپتتون با شخصی که اونو اجرا میکنه در تعامل باشه , مثل ابزار هایی از کالی لینوکس که با بش نوشته شدن شل بش راه هایی برای این کار در نظر گرفته , مثل پارامتر هایی که به برنامه اضافه میکنیم , یا اپشن ها و ... پارامتر ها : ساده ترین راه تزریق دیتا به اسکریپتتون هستند , که در زمان اجرای کد اعمال میشن : $ ./red 10 30 شل بش متغیر های مخصوصی رو برای دریافت پارامتر ها تعریف میکنه که بهشون میگن positional parameters این متغیر ها اعداد استاندارد هستند , که 0$ اسم اسکریپت رو نگه میداره و 1$ یا 2$ و ... تا 9$ پارامتر هارو نگه میدارن , به مثال زیر توجه کنید : $ cat test2.sh #!/bin/bash # estefade az parameter # total=$[ $1 * $2 ] echo avalin parameter : $1 echo dovomin parameter : $2 echo meghdare kol : $total $ ./test2.sh 2 5 avalin parameter : 2 dovomin parameter : 5 meghdare kol : 10 در مثال بالا پارامتر ها مقدار عددی داشتند , شما میتونید از رشته هم استفاده کنید : $ cat test3.sh #!/bin/bash # echo hello $1 $ ./test3.sh red hello red توجه داشته باشید اگه در مثال بالا از اسمی که فاصله بینشه استفاده کنید بخش اول اسم به عنوان اولین پارامتر برداشته میشه : $ ./test3.sh red naxela hello red متوجه شدید که شل برای تمایز بین پارامتر ها از فاصله استفاده میکنه , بنابراین برای استفاده از مقادیر دارای فاصله از کوتیشن تک یا دابل استفاده میکنیم : $ ./test3.sh 'red naxela' hello red naxela $ ./test3.sh "red naxela" hello red naxela ما از متغیر های نه گانه ی نگهدارنده پارامتر ها صحبت کردیم ولی بیشتر از نه پارامتر هم میشه تعریف کرد , فقط شکل خوندنشون تغیر میکنه , در مثال زیر نحوه خوندن پارامتر های شماره 10 و 11 رو میبینید : $ cat test4.sh #!/bin/bash # teste bish az 9 parameter # total=$[ ${10} * ${11} ] echo dahomin parameter : ${10} echo yazdahomin parameter : ${11} echo meghdare kol : $total $ ./test4.sh 1 2 3 4 5 6 7 8 9 10 11 12 dahomin parameter : 10 yazdahomin parameter : 11 meghdare kol : 110 خوندن اسم اسکریپت : انجام این کار در اسکریپت های چند تابعی کاربرد پیدا میکنه , که به روش زیر انجام میشه : $ cat test5.sh #!/bin/bash # teste $0 parameter # echo parameter sefr : $0 $ bash test5.sh parameter sefr : test5.sh $ ./test5.sh parameter sefr : ./test5.sh $ bash /home/rednaxela/test5.sh parameter sefr : /home/rednaxela/test5.sh طبق مثال های اجرای مختلف اسکریپت مشاهده کردید که متغیر 0$ به چه شکلی عمل میکنه برای اینکه فقط اسم اسکریپت رو دریافت کنید (بدون مسیر) از دستور basename استفاده میکنیم : $ cat test5b.sh #!/bin/bash # estefade az basename baraye parameter $0 # name=$(basename $0) echo echo esme script : $name $ bash /home/rednaxela/test5b.sh esme script : test5b.sh $ ./test5b.sh esme script : test5b.sh شما میتونید از این تکنیک برای اسکریپت هایی که چند تابعی هستند و توابع بر اسم اسکریپت تکیه دارن استفاده کنید , به مثال زیر توجه کنید : $ cat test6.sh #!/bin/bash # name=$(basename $0) # if [ $name = "jam" ] then total=$[ $1 + $2 ] # elif [ $name = "zarb" ] then total=$[ $1 * $2 ] fi # echo echo meghdare mohasebe shode : $total $ cp test6.sh jam $ chmod u+x jam $ ln -s test6.sh zarb $ ls -l jam zarb -rwxrw-r--. 1 rednaxela rednaxela 224 Jun 30 23:50 jam lrwxrwxrwx. 1 rednaxela rednaxela 8 Jun 30 23:50 zarb -> test6.sh $ ./jam 2 5 meghdare mohasebe shode : 7 $ ./zarb 2 5 meghdare mohasebe shode : 10 تست پارامتر ها : در اسکریپت های پارامتر دار مواضب خطا های مربوط به استفاده نادرست از پارامتر ها باشید , مثال : $ ./red 2 ./red: line 8: 2 + : syntax error: operand expected (error token is " ") meghdare mohasebe shode : برای جلوگیری همیشه پارامتر هاتون رو چک کنید که ایا مقدار دارن یا نه : $ cat test7.sh #!/bin/bash # teste parameter ghabl az estefade # if [ -n "$1" ] then echo hello $1 else echo "meghdar vared nashode" fi $ ./test7.sh red hello red $ ./test7.sh meghdar vared nashode استقاده از متغیر های مخصوص پارامتر ها : در مثال بالا چک کردن مقدار پارامتر برای جلوگیری از بروز خطا رو دیدید , که البته راه اصلی نبود , استفاده از روش بالا در اسکریپت های دارای چندین پارامتر اشگال این موضوع رو نشون میده به جای تست تک به تک پارامتر ها میتونید تعداد پارامتر های وارد شده رو در نظر بگیرید بش یک متغیر مخصوص برای این موضوع در نظر گرفته متغیر مخصوص #$ تعداد پارامتر های وارد شده رو نگهداری میکنه , مثال زیر : $ cat test8.sh #!/bin/bash # daryafte tedade parameter ha # echo tedade parameter haye voroodi : $# $ ./test8.sh tedade perameter haye voroodi : 0 $ ./test8.sh 1 2 3 4 5 tedade parameter haye voroodi : 5 $ ./test8.sh 1 2 3 4 5 6 7 8 9 10 tedade parameter haye voroodi : 10 $ ./test8.sh "red naxela" tedade parameter haye voroodi : 1 مثال تست کردن پارامتر ها با این روش : $ cat test9.sh #!/bin/bash # teste parameter ha # if [ $# -ne 2 ] then echo echo nahve ye estefade : test9.sh a b echo else total=$[ $1 + $2 ] echo echo meghdare mohasebe shode : $total echo fi $ bash test9.sh nahve ye estefade : test9.sh a b $ bash test9.sh 10 nahve ye estefade : test9.sh a b $ bash test9.sh 10 15 meghdare mohasebe shode : 25 همینطور میتونید فقط اخرین پارامتر وارد شده رو بیرون بکشید : $ cat test10.sh #!/bin/bash # akharin parameter # params=$# echo echo tedade parameter ha : $params echo akharin parameter : ${!#} echo $ bash test10.sh 1 2 3 4 5 tedade parameter ha : 5 akharin parameter : 5 $ bash test10.sh tedade parameter ha : 0 akharin parameter : test10.sh پایان قسمت نهم از بخش دوم
  7. میتونی در کالی لینوکس از John the Ripper استفاده کنی اموزشش هم یه سرچ بزنی همه جا هست ، فیلمو کتاب
  8. همونطور که میدونید مک ادرس بخش مهمی در مبحث حفظ ناشناس بودن در یک پروژه تست نفوذ پذیریه امروز با استفاده از macchanger در کالی لینوکس ادرس منحصر به فرد سخت افزاری یا همون مک ادرس رو تغیر میدیم توجه داشته باشید دستورات یا مستقیما با یوزر root اجرا بشن ، یا با استفاده از sudo برای شروع با دستور زیر مک ادرس فعلی خودمونو با استفاده از macchanger میبینیم ، که نتورک اینترفیس به عنوان ارگمان به اپشن s- داده شده : macchanger -s eth0 قبل از اقدام برای تغیر مک ادرس باید نتورک اینترفیسمون رو غیر فعال کنیم ، برای اینکار از دستور ifconfig استفاده میکنیم : ifconfig eth0 down بعد از غیر فعال شدن نتورک اینترفیس ، میتونیم با دستور زیر یک مک ادرس به صورت رندوم تولید و الحاق کنیم : macchanger -r eth0 مک ادرس تغیر کرد ، با فعال کردن نتورک اینترفیس و نمایش مک ادرس فعلی میتونیم نتیجه کارو ببینیم ifconfig eth0 up macchanger -s eth0 تصویر مراحل توضیح داده شده : همینطور میتونیم با استفاده از اپشن m- یک مک ادرس مشخص رو جایگزین کنیم ، که این مورد برای حملات مرتبط با جعل مک ادرس کاربرد داره ، مثال : ifconfig eth0 down macchanger -m 00:d0:62:00:30:43 eth0 ifconfig eth0 up macchanger -s eth0
  9. حلقه های امضایی در بین ارز های دیجیتال ارز هایی هستند که بیشتر جلب توجه میکنند , ارز هایی با ادعای غیر قابل ردیابی بودن که البته خیلی از همین ارز ها هم به مرور حفره های امنیتی در زیر ساخت های الگوریتم های محافظتیشون کشف شد و در یک کلام , راه ردیابی لو رفت . این اتفاق حتی برای ارز هایی که خودشون رو بهترین در این زمینه معرفی میکردند هم افتاد , مثل ارز zcash که با همه ی افسانه های دور و برش خیلیارو به باد داد امروز ما میخوایم به یکی از الگوریتم های مورد استفاده در بخش امنیت اطلاعات monero نگاهی گذرا داشته باشیم , که دلیل ادعای این ارز بر امنیت تعاملاتشه , که تحت عنوان ring signature شناخته میشه این تکنیک نوعی امضای دیجیتاله که گروهی از امضا کننده های ممکن با هم ادغام میشن تا یک امضای متمایز تولید کنند که به تراکنش تعلق بگیره ring signature یک گروه رو قادر میسازه تا یک ابجکت رو از طرف گروه امضا کنند , بدون اینکه هویت امضا کننده اصلی مشخص بشه که به همین منظور همزمان از کلید های اکانت شما و کلید های عمومی بیرون کشیده شده از بلاکچین با استفاده از روش توضیع مثلتی استفاده میشه کلید های عمومی میتونن چندین بار برای ساخت امضای شرکت کنندگان ممکن , در یک حلقه ی امضا کنندگان مورد استفاده قرار بگیرن , که تمام اعضای حلقه قانونی و با هم برابر محسوب میشن بنابراین برای یک نظاره گر بیرونی راهی وجود نداره که بگه کدوم یکی از امضا کنندگان در حلقه ی امضایی با اکانت شما مرتبط بوده , به همین دلیله که اطمینان میدن خروجیه تراکنش ها قابل ردیابی نیستند
  10. گروه شش ساله تشکیل شده ، کافیه صلاحیتتو نشون بدی تا بخشی ازش باشی

  11. R3DN4X314

    دورک میخوام

    عزیز من شما دیروز هم همین پست رو ارسال کردی که همین الان هم صفحه اول انجمن قرار داره و حتی پایین نرفته چرا فکر کردی با ارسال دوباره پست اونم در یک تاپیک جدید و در اصل با تولید زباله به هدفت میرسی ؟ جدا از بحث روش اشتباه در طراحی سوالت ، مبحثی که پیگیرشی با قوانین انجمن مغایرت داره و جرم محسوب میشه لطفا قوانین انجمن رو مطالعه و در ارسال های بعدیت اعمال کن
  12. R3DN4X314

    30.000 نفر

    سی هزار نفره شدنمون رو به همه اعضای عزیز گاردایران تبریک میگم ما همیشه از بهترین ها بودیم ، به امید بهترین موندن
  13. بخش دوم - قسمت هشتم کنترل حلقه ها : شما ممکنه فکر کرده باشید بعد از شروع کار یک حلقه , تا پایان کارش کنترلی روش ندارید که این موضوع حقیقت نداره و با استفاده از دستورات break و continue میتونید اتفاقات درون حلقه رو کنترل کنید دستور break : این یه دستور ساده برای متوقف کردنه که میتونید داخل هر نوع حلقه ای ازش استفاده کنید , مثال : $ cat test17 #!/bin/bash # teste break for var1 in 1 2 3 4 5 6 7 8 9 10 do if [ $var1 -eq 5 ] then break fi echo "akharin meghdar : $var1" done echo "payane kare halghe" $ ./test17 akharin meghdar : 1 akharin meghdar : 2 akharin meghdar : 3 akharin meghdar : 4 payane kare halghe این روش برای while و until هم استفاده میشه $ cat test18 #!/bin/bash # var1=1 while [ $var1 -lt 10 ] do if [ $var1 -eq 5 ] then break fi echo "meghdar : $var1" var1=$[ $var1 + 1 ] done echo "payane kare halghe" $ ./test18 meghdar : 1 meghdar : 2 meghdar : 3 meghdar : 4 payane kare halghe وقتی دارید با حلقه های درون هم کار میکنید , توجه داشته باشید که دستور کجا اجرا میشه , مثال زیر رو ببینید : $ cat test19 #!/bin/bash # for (( a = 1; a < 4; a++ )) do echo "halghe ye birooni : $a" for (( b = 1; b < 100; b++ )) do if [ $b -eq 5 ] then break fi echo " halghe ye darooni : $b" done done $ ./test19 halghe ye birooni : 1 halghe ye darooni : 1 halghe ye darooni : 2 halghe ye darooni : 3 halghe ye darooni : 4 halghe ye birooni : 2 halghe ye darooni : 1 halghe ye darooni : 2 halghe ye darooni : 3 halghe ye darooni : 4 halghe ye birooni : 3 halghe ye darooni : 1 halghe ye darooni : 2 halghe ye darooni : 3 halghe ye darooni : 4 موقعیت هایی وجود داره که شما داخل حلقه درونی هستید و لازمه حلقه بیرونی متوقف بشه , برای این کار از break n استفاده میکنیم که n سطح حلقه هارو مشخص میکنه , مقدار پیش فرض یک هستش , که مربوط به حلقه فعلی میشه اگه شما مقدار رو برابر عدد دو قرار بدید , دستور یک سطح به سمت حلقه های بیرونی حرکت میکنه , مثال : $ cat test20 #!/bin/bash # for (( a = 1; a < 4; a++ )) do echo "halghe ye birooni : $a" for (( b = 1; b < 100; b++ )) do if [ $b -gt 4 ] then break 2 fi echo " halghe ye darooni : $b" done done $ ./test20 halghe ye birooni : 1 halghe ye darooni : 1 halghe ye darooni : 2 halghe ye darooni : 3 halghe ye darooni : 4 دستور continue : این دستور مثل نمونه قبلی عمل میکنه ولی جالب تر , میشه گفت به تنهایی به جای دو دستور توقف و شروع عمل میکنه , مثال زیر رو ببینید : $ cat test21 #!/bin/bash # teste dastoore continue for (( var1 = 1; var1 < 15; var1++ )) do if [ $var1 -gt 5 ] && [ $var1 -lt 10 ] then continue fi echo "meghdar : $var1" done $ ./test21 meghdar : 1 meghdar : 2 meghdar : 3 meghdar : 4 meghdar : 5 meghdar : 10 meghdar : 11 meghdar : 12 meghdar : 13 meghdar : 14 توجه داشته باشید بعد از اجرای دستور عملیات داخل حلقه متوقف شده , بنابراین مواضب موارد کنترلی عملیات باشید , در مثال زیر یکی از بخش های کنترلی داخل خود حلقه تعبیه شده , مشگلی که به وجود میاد رو ببینید : $ cat badtest3 #!/bin/bash # estefade ye eshtebah var1=0 while echo "meghdar : $var1" [ $var1 -lt 15 ] do if [ $var1 -gt 5 ] && [ $var1 -lt 10 ] then continue fi echo " moroore dakheli : $var1" var1=$[ $var1 + 1 ] done $ ./badtest3 | more meghdar : 0 moroore dakheli : 0 meghdar : 1 moroore dakheli : 1 meghdar : 2 moroore dakheli : 2 meghdar : 3 moroore dakheli : 3 meghdar : 4 moroore dakheli : 4 meghdar : 5 moroore dakheli : 5 meghdar : 6 meghdar : 6 meghdar : 6 meghdar : 6 meghdar : 6 meghdar : 6 meghdar : 6 meghdar : 6 meghdar : 6 meghdar : 6 meghdar : 6 همونطور که حدس میزنید در این دستور هم میتونیم در حلقه های داخلی سطح حلقه های بیرونی رو برای اجرای دستور مشخص کنیم , مثال : $ cat test22 #!/bin/bash # for (( a = 1; a <= 5; a++ )) do echo "meghdare $a :" for (( b = 1; b < 3; b++ )) do if [ $a -gt 2 ] && [ $a -lt 4 ] then continue 2 fi var3=$[ $a * $b ] echo " natije ye $a * $b mishe : $var3" done done $ ./test22 meghdare 1 : natije ye 1 * 1 mishe : 1 natije ye 1 * 2 mishe : 2 meghdare 2 : natije ye 2 * 1 mishe : 2 natije ye 2 * 2 mishe : 4 meghdare 3 : meghdare 4 : natije ye 4 * 1 mishe : 4 natije ye 4 * 2 mishe : 8 meghdare 5 : natije ye 5 * 1 mishe : 5 natije ye 5 * 2 mishe : 10 و در نهایت شما میتونید در شل اسکریپتتون خروجیه یک حلقه رو پایپ و یا ریدایرکت کنید این کار رو با اضافه کردن علامت بزرگتر به حلقه میتونید انجام بدید , مثال : for file in /home/red/* do if [ -d "$file" ] then echo "$file yek directory hastesh" elif echo "$file yek file hastesh" fi done > output.txt یک مثال پویا تر : $ cat test23 #!/bin/bash # for (( a = 1; a < 10; a++ )) do echo "meghdar : $a" done > test23.txt echo "payane kar" $ ./test23 payane kar $ cat test23.txt meghdar : 1 meghdar : 2 meghdar : 3 meghdar : 4 meghdar : 5 meghdar : 6 meghdar : 7 meghdar : 8 meghdar : 9 یک مثال از پایپ کردن خروجیه حلقه : $ cat test24 #!/bin/bash # piping for var1 in 2 4 1 5 3 do echo $var1 done | sort $ ./test24 1 2 3 4 5 پایان قسمت هشتم از بخش دوم
  14. view source در هر صفحه ای که استفاده بشه کد های کلاینت ساید اون صفحه رو نشون میده ، نه فقط صفحه اول سایت . شما کد های سمت سرور رو میخواید که در حالت نرمال غیر ممکنه دیدنش ، در بعضی شرایط و اسیب پذیری ها این کار شدنیه که اونم در اکثر مواقع کد ها بخش بخش قابل دستیابی هستند که البته وقتی شما با این حجم از اسیب پذیری مواجه بشید دیگه نیازی به سورس کد نیست ، مستقیم با چندین روش اکسپلویت میشه خلاصه اینکه داری راه رو اشتباه میری ولی اگه کلا به این موضوع علاقه داری میتونی برای شروع در مورد Source Code Disclosure تحقیق کنی که در این شرایط مثلا شما از اسکریپتی که برای دانلود یک فایل تعریف شده سو استفاده میکنید و خود اسکریپت رو دانلود میکنید مثال : فرض کن کد زیر لینک دانلود یک اهنگه [Hidden Content] وقتی روی لینک کلیک میکنی در اصل یک درخواست ارسال میشه که با تغیر در مقدار درخواستی به شکل زیر ، سایت اسیب پذیر به دلیل عدم کنترل مناسب خود اسکریپت منبع رو بهمون تحویل میده [Hidden Content]
  15. چه نوع از سورس منظورته ؟؟؟ اگه منظورت سورس کلاینت ساید هستش ، در قسمت view source مرورگر میتونی ببینیش اما اگه منظورت سورس سرور سایده ، نمیتونی ببینیش عموما وقتی درخواست مرورگر به وب سرور میرسه صفحه وب مورد نظر در قالب کد های html , css و js ارسال میشه
  16. بخش دوم - قسمت هفتم دستور while : این دستور یه چیزی بین IF-Then و For عمل میکنه که ما یک شرط تعریف میکنیم که نسبت به اون حلقه تکرار بشه , فرمت و مثال : while test command do other commands done $ cat test10 #!/bin/bash var1=10 while [ $var1 -gt 0 ] do echo $var1 var1=$[ $var1 - 1 ] done $ ./test10 10 9 8 7 6 5 4 3 2 1 همونطور که میبینید گفته شده تا زمانی که شرط چیزی که ما میخوایم نشده (مقدار متغیر بیشتر از صفره) حلقه ادامه پیدا کنه (چاپ مقدار و کم کردن از متغیر) شما میتونید از چند دستور برای این کار استفاده کنید ولی فقط کد وضعیت اجرای اخرین دستور ، شرط محسوب میشه $ cat test11 #!/bin/bash # teste chand dastoor dar halghe var1=10 while echo $var1 [ $var1 -ge 0 ] do echo "daroone halghe hastim" var1=$[ $var1 - 1 ] done $ ./test11 10 daroone halghe hastim 9 daroone halghe hastim 8 daroone halghe hastim 7 daroone halghe hastim 6 daroone halghe hastim 5 daroone halghe hastim 4 daroone halghe hastim 3 daroone halghe hastim 2 daroone halghe hastim 1 daroone halghe hastim 0 daroone halghe hastim —1 دستور Until : این دستور کاملا برعکس دستور قبل کار میکنه , فرمت و مثال : until test commands do other commands done $ cat test12 #!/bin/bash # var1=100 until [ $var1 -eq 0 ] do echo $var1 var1=$[ $var1 - 25 ] done $ ./test12 100 75 50 25 $ یک مثال پویا تر با روش بیش از یک دستور : $ cat test13 #!/bin/bash # var1=100 until echo $var1 [ $var1 -eq 0 ] do echo "hanooz daroone halgheyim : $var1" var1=$[ $var1 - 25 ] done $ ./test13 100 hanooz daroone halgheyim : 100 75 hanooz daroone halgheyim : 75 50 hanooz daroone halgheyim : 50 25 hanooz daroone halgheyim : 25 0 استفاده از حلقه ها داخل یکدیگر : $ cat test14 #!/bin/bash # estefade az halghe haye dakhele ham for (( a = 1; a <= 3; a++ )) do echo "halghe ye avaliye : $a" for (( b = 1; b <= 3; b++ )) do echo " halghe ye darooni : $b" done done $ ./test14 halghe ye avaliye : 1 halghe ye darooni : 1 halghe ye darooni : 2 halghe ye darooni : 3 halghe ye avaliye : 2 halghe ye darooni : 1 halghe ye darooni : 2 halghe ye darooni : 3 halghe ye avaliye : 3 halghe ye darooni : 1 halghe ye darooni : 2 halghe ye darooni : 3 یه مثال دیگه با تنوع نوع حلقه ها : $ cat test15 #!/bin/bash # var1=5 while [ $var1 -ge 0 ] do echo "halghe ye birooni : $var1" for (( var2 = 1; $var2 < 3; var2++ )) do var3=$[ $var1 * $var2 ] echo " halghe ye darooni : $var1 * $var2 = $var3" done var1=$[ $var1 - 1 ] done $ ./test15 halghe ye birooni : 5 halghe ye darooni : 5 * 1 = 5 halghe ye darooni : 5 * 2 = 10 halghe ye birooni : 4 halghe ye darooni : 4 * 1 = 4 halghe ye darooni : 4 * 2 = 8 halghe ye birooni : 3 halghe ye darooni : 3 * 1 = 3 halghe ye darooni : 3 * 2 = 6 halghe ye birooni : 2 halghe ye darooni : 2 * 1 = 2 halghe ye darooni : 2 * 2 = 4 halghe ye birooni : 1 halghe ye darooni : 1 * 1 = 1 halghe ye darooni : 1 * 2 = 2 halghe ye birooni : 0 halghe ye darooni : 0 * 1 = 0 halghe ye darooni : 0 * 2 = 0 به مثال زیر دقت کنید (ترکیب) : $ cat test16 #!/bin/bash # tarkibe until va while # var1=3 until [ $var1 -eq 0 ] do echo "halghe ye birooni : $var1" var2=1 while [ $var2 -lt 5 ] do var3=$(echo "scale=4; $var1 / $var2" | bc) echo " halghe ye darooni : $var1 / $var2 = $var3" var2=$[ $var2 + 1 ] done var1=$[ $var1 - 1 ] done $ ./test16 halghe ye birooni : 3 halghe ye darooni : 3 / 1 = 3.0000 halghe ye darooni : 3 / 2 = 1.5000 halghe ye darooni : 3 / 3 = 1.0000 halghe ye darooni : 3 / 4 = .7500 halghe ye birooni : 2 halghe ye darooni : 2 / 1 = 2.0000 halghe ye darooni : 2 / 2 = 1.0000 halghe ye darooni : 2 / 3 = .6666 halghe ye darooni : 2 / 4 = .5000 halghe ye birooni : 1 halghe ye darooni : 1 / 1 = 1.0000 halghe ye darooni : 1 / 2 = .5000 halghe ye darooni : 1 / 3 = .3333 halghe ye darooni : 1 / 4 = .2500 همچنین با ترکیب دو روش حلقه های درون هم و تغیر IFS میتونیم داخل فایل ها رو با حلقه ها مرور کنیم cat test17 #!/bin/bash # taghire IFS IFS.OLD=$IFS IFS=$'\n' for var1 in $(cat /etc/passwd) do echo "meghdar : $var1" IFS=: for var2 in $var1 do echo " $var2" done done ./test17 meghdar : rednaxela:x:501:501:red naxela:/home/rednaxela:/bin/bash rednaxela x 501 501 red naxela /home/rednaxela /bin/bash meghdar : red:x:502:502:red:/home/red:/bin/bash red x 502 502 red /home/red /bin/bash پایان قسمت هفتم از بخش دوم
  17. دستور اولی که گفتم بزنی اجرا نشده ، یا اول دستوری که زدی رو به sudo bash -c تغیر بده (یه بش و اپشن اضافه شده فقط) و تمام مقدار جلوش (دستور اول) رو بین تک کوتیشن بزار یا فایل رو با sudo nano باز کن و مقدار بین کوتیشن ها (در دستور اول) رو دستی کپی کن فایل مورد بحث اطلاعات مخازن رو نگه میداره ، دستور اول اطلاعات رو میده به فایل
  18. به ترتیب اول : echo -e "deb [Hidden Content] sana main non-free contrib\ndeb [Hidden Content] sana/updates main contrib non-free" > /etc/apt/sources.list دوم : apt-get update apt-get update --fix-missing سوم : دستور نصبتو بزن اوکی شده الان
  19. بخش دوم - قسمت ششم استفاده از دستور case برای کوتاه کردن if-then-else : در بعضی شرایط مثل مثال زیر ما میتونیم از گیر دستورالعمل ها دربیایم و میانبر بزنیم یجورایی : $ cat test25.sh #!/bin/bash # if [ $USER = "rednaxela" ] then echo "Welcome $USER" elif [ $USER = "red" ] then echo "Welcome $USER" elif [ $USER = "blue" ] then echo "Welcom $USER" elif [ $USER = "white" ] then echo "voroode shoma mojaz nist" else echo "user shoma sabt nashode" fi $ ./test25.sh Welcome rednaxela الکی تکرار کردن کد هارو در مثال بالا دیدید ؟ حالا کاربرد مثال اصلی رو بهتر متوجه میشید : استفاده از case : فرمت و مثال : case variable in pattern1 | pattern2) commands;; pattern3) commands;; *) commands;; esac $ cat test26.sh #!/bin/bash # estefade az case baraye shoroote motevali # case $USER in rednaxela | red | blue) echo "Welcome $USER";; white) echo "voroode shoma mojaz nist";; *) echo "user shoma sabt nashode";; esac $ ./test26.sh Welcome rednaxela مشاهده کردید که چقدر کار ساده تر و تمیز تر انجام شد دقیقا مثل اسکریپت قبلی ورود سه یوزر اول مجاز بود , به یوزر چهارم پیام ممنوعیت داده شد و در نهایت برای هر مقدار ورودی دیگه ای پیام یوزر شما ثبت نشده داده شد حلقه ها : با استفاده از حلقه ها یاد میگیرید چطور پروسه هارو تکرار کنید دستور for : گاهی شما نیاز دارید بعضی دستورات تا زمان خاصی تکرار بشن , با استفاده از این دستور حلقه ای ساخته میشه که این کارو انجام میده , فرمت و مثال : for var in list do commands done $ cat test1 #!/bin/bash # for var1 in red blue green white pink do echo range zibaye : $var1 done $ ./test1 range zibaye : red range zibaye : blue range zibaye : green range zibaye : white range zibaye : pink مشاهده کردید که متغیر در هر مرحله یکی از عناصر لیست رو به ترتیب نگه داشته و دستورات رو اجرا کرده و بعد عنصر بعدی بعد از اتمام لیست متغیر درون حلقه اخرین مقدار رو نگه میداره مگر اینکه تغیرش بدید , مثال زیر : $ cat test1b #!/bin/bash # teste moteghayere daroone halghe for var1 in red blue green white pink do echo range zibaye : $var1 done # echo "akharin rangi ke print kardim : $var1" var1=black echo "range jadid : $var1" $ ./test1b range zibaye : red range zibaye : blue range zibaye : green range zibaye : white range zibaye : pink akharin rangi ke print kardim : pink range jadid : black همینطور میتونید از متغیر ها به عنوان لیست برای حلقه استفاده کنید : $ cat test4 #!/bin/bash # list="red blue green pink" list=$list" white" # for var1 in $list do echo "range zibaye : $var1" done $ ./test4 range zibaye : red range zibaye : blue range zibaye : green range zibaye : pink range zibaye : white نمونه بعدی , استفاده از خروجی یک دستور به عنوان لیست در حلقه : $ cat test5 #!/bin/bash # for var in $(cat file) do echo "range zibaye : $var" done در مثال بالا مقادیر لیستمون در یک فایل ذخیره شده بوده , و ما اون فایل رو با دستور cat خوندیم , و مقدار خروجی دستور رو به عنوان ورودی دادیم به متغیر داخل حلقه , توجه داشته باشید که در مثال بالا مقدار فایل خط به خط خونده میشه , یعنی مثل متغیر در مثال قبلی مقادیر با فاصله از هم جدا نمیشن بلکه هر کدوم در یک خط جدا قرار میگیرن جدا کننده فیلد ها : متغیر محیطی IFS) internal field separator) مشخص میکنه چه چیزی مرز بین فیلد هاست به عنوان مثال به صورت پیش فرض فاصله , تب و خط جدید تعریف شدن مثلا اگه شما بخواید فقط خط جدید به عنوان بخش بندی فیلد ها در نظر گرفته بشه , مقدار متغیر رو به مقدار زیر تغیر بدید IFS=$'\n' اضافه کردن مثال بالا به اسکریپت , باعث میشه شل علامت های فاصله و تب رو به عنوان جدا کننده فیلد قبول نکنه در اسکریپت های طولانی ممکنه در هر بخشی مقدار مشخص شده ای رو برای جدا سازی فیلد ها لازم داشته باشید و نیاز به تغیر های متعدد در متغیر فعلی داشته باشید , برای این کار قبل از تغیر در متغیر از مقدارش نمونه گیری میکنیم IFS.OLD=$IFS IFS=$'\n' < va har vaght lazem bood reset mikonim : > IFS=$IFS.OLD بسته به نیازتون مقادیر مختلفی میشه تعریف کرد , به صورت تکی یا دسته جمعی IFS=: IFS=$'\n':;" خوندن دایرکتوری با wildcard ها : شما میتونید با استفاده از for فایل های دایرکتوری رو بخونید وقتی اسم کامل فایل یا مسیرش رو نمیدونید این موضوع کاربرد پیدا میکنه $ cat test6 #!/bin/bash # for file in /home/rednaxela/test/* do if [ -d "$file" ] then echo "$file yek directory hastesh" elif [ -f "$file" ] then echo "$file yek file hastesh" fi done $ ./test6 /home/rednaxela/test/dir1 yek directory hastesh /home/rednaxela/test/myprog.c yek file hastesh /home/rednaxela/test/myprog yek file hastesh /home/rednaxela/test/myscript yek file hastesh /home/rednaxela/test/newdir yek directory hastesh /home/rednaxela/test/newfile yek file hastesh /home/rednaxela/test/newfile2 yek file hastesh /home/rednaxela/test/testdir yek directory hastesh /home/rednaxela/test/testing yek file hastesh /home/rednaxela/test/testprog yek file hastesh /home/rednaxela/test/testprog.c yek file hastesh دقت کنید در مثال بالا مقدار متغیر فایل رو در شرط ها بین دابل کوتیشن گذاشتیم در صورتی که در بخش اموزشش چنین چیزی نگفته بودیم ما این کارو کردیم چون در لینوکس فاصله بین اسم ابجکت ها عادیه و این باعث شد در صورت فاصله دار بودن اسم هر کدوم از فایل هایی که مرور شدن , هیچ مشگلی پیش نیاد یک مثال پویا تر : $ cat test7 #!/bin/bash # for file in /home/rednaxela/.b* /home/rednaxela/badtest do if [ -d "$file" ] then echo "$file yek directory hastesh" elif [ -f "$file" ] then echo "$file yek file hastesh" else echo "$file vojood nadarad" fi done $ ./test7 /home/rednaxela/.backup.timestamp yek file hastesh /home/rednaxela/.bash_history yek file hastesh /home/rednaxela/.bash_logout yek file hastesh /home/rednaxela/.bash_profile yek file hastesh /home/rednaxela/.bashrc yek file hastesh /home/rednaxela/badtest vojood nadarad استفاه از استایل C برای for : در این حالت ما از دستور for در بش به سبک استفاده در زبان C الگو میگیریم for (i = 0; i < 10; i++) { printf("shomare ye badi mishe : %d\n", i); } متغیر i در مثال بالا نقش شمارنده داره , که در اولین بخش مقدار پیش فرضش رو گرفته و در بخش دوم تا زمانی که مقدارش کوچکتر از 10 باشه حلقه ادامه پیدا میکنه و در بخش اخر متغیر بعد از هر بار مرور حلقه مقدارش افزایش پیدا میکنه و اما حالت زیر مثال اصلیمونه , فرمت و مثال : for (( variable assignment ; condition ; iteration process )) for (( a = 1; a < 10; a++ )) $ cat test8 #!/bin/bash # teste C-style for # for (( i=1; i <= 10; i++ )) do echo "shomare ye badi mishe : $i" done $ ./test8 shomare ye badi mishe : 1 shomare ye badi mishe : 2 shomare ye badi mishe : 3 shomare ye badi mishe : 4 shomare ye badi mishe : 5 shomare ye badi mishe : 6 shomare ye badi mishe : 7 shomare ye badi mishe : 8 shomare ye badi mishe : 9 shomare ye badi mishe : 10 شما میتونید در این فرمت از چند متغیر هم استفاده کنید , اما فقط یک شرط استفاده میشه , مثال : $ cat test9 #!/bin/bash # chand moteghayer # for (( a=1, b=10; a <= 10; a++, b-- )) do echo "$a - $b" done $ ./test9 1 - 10 2 - 9 3 - 8 4 - 7 5 - 6 6 - 5 7 - 4 8 - 3 9 - 2 10 - 1 پایان قسمت ششم از بخش دوم
  20. مشگل خاصی که ایجاد نمیکنه فقط یکم طول میکشه ، پنجاه و سومین نسل ازت میتونه پسورد رو برداره
  21. این استتوس میگه تمام بازه ای که براش تعریف کردی تست شده و بی فایده بوده قبل از هر چیزی در وحله ی اول نوع md5 رو میدونی ؟ یا درست تعریف کردی ؟ خود هش md5 انواع مختلفی داره
  22. بخش دوم - قسمت پنجم کلاس مقایسات فایل : این متد به شما اجازه میده وضعیت فایل ها و دایرکتوری هارو تست کنید : d dir-name- چک میکنه ایا چنین ابجکتی وجود داره , و اگه وجود داره ایا دایرکتوریه e file- چک میکنه ایا چنین ابجکتی وجود داره f file- چک میکنه ایا چنین ابجکتی وجود داره , و اگه وجود داره ایا فایله r file- چک میکنه ایا چنین ابجکتی وجود داره , و اگه وجود داره ایا قابل خوندنه s file- چک میکنه ایا چنین ابجکتی وجود داره , و اگه وجود داره ایا مقدار داره w file- چک میکنه ایا چنین ابجکتی وجود داره , و اگه وجود داره ایا قابل نوشتنه x file- چک میکنه ایا چنین ابجکتی وجود داره , و اگه وجود داره ایا قابل اجراست O file- چک میکنه ایا چنین ابجکتی وجود داره , و اگه وجود داره ایا مال یوزر فعلیه G file- چک میکنه ایا چنین ابجکتی وجود داره , و اگه وجود داره ایا با یوزر فعلی هم گروهه file1 -nt file2 چک میکنه ایا فایل1 جدید تره از فایل2 file1 -ot file2 چک میکنه ایا فایل1 قدیمی تره از فایل2 این ابزار ها باعث میشه شما قابلیت چک کردن فایل سیستم رو با شل اسکریپت داشته باشید , مثال ها به ترتیب : چک کردن دایرکتوری : $ cat test11.sh #!/bin/bash # jump_directory=/home/redd if [ -d $jump_directory ] then echo "directory : $jump_directory vojood dare" cd $jump_directory ls else echo "directory : $jump_directory vojood nadare" fi $ directory : /home/redd vojood danare $ چک کردن موجودیت یک ابجکت : $ cat test12.sh #!/bin/bash # location=$HOME file_name="target" # if [ -e $location ] then echo "directory : $location vojood dare" echo "file $file_name ro check mikonim" # if [ -e $location/$file_name ] then echo "file $file_name vojood dare" echo "dar hale Update tarikhe hazer ..." date >> $location/$file_name # else echo "File vojood nadare" echo "tarikh update nashod" fi # else echo "directory : $location vojood nadare" echo "tarikh update nashod" fi $ ./test12.sh directory : /home/rednaxela vojood dare file target ro check mikonim File vojood nadare tarikh update nashod $ touch tartget $ ./test12.sh directory : /home/rednaxela vojood dare file target ro check mikonim file target vojood dare dar hale Update tarikhe hazer ... چک کردن فایل : $ cat test13.sh #!/bin/bash # item_name=$HOME echo echo "item : $item_name check mishe" echo if [ -e $item_name ] then echo "item : $item_name vojood dare" echo "ama aya yek file hastesh ?" echo if [ -f $item_name ] then echo "bale $item_name yek file hastesh" # else echo "na $item_name file nist" fi # else echo "item : $item_name vojood nadare" fi $ ./test13.sh item : /home/rednaxela check mishe item : /home/rednaxela vojood dare ama aya yek file hastesh ? na /home/rednaxela file nist چک کردن قابل خوندن بودن : $ cat test14.sh #!/bin/bash # pwfile=/etc/shadow # if [ -f $pwfile ] then if [ -r $pwfile ] then tail $pwfile else echo "file : $pwfile ghabele khoondan nist" fi else echo "file : $pwfile vojood nadare" fi $ ./test14.sh file : /etc/shadow ghabele khoondan nist چک کردن موجودیت مقدار فایل : $ cat test15.sh #!/bin/bash # file_name=$HOME/file1 # if [ -f $file_name ] then if [ -s $file_name ] then echo "file $file_name vojood dare va meghdar ham dare" echo "nemitoonim in file ro remove konim" else echo "file $file_name vojood dare vali khaliye" echo "removing file..." rm $file_name fi else echo "File $file_name vojood nadare" fi $ ls -l $HOME/file1 -rw-rw-r--. 1 rednaxela rednaxela 29 Jun 25 05:32 /home/rednaxela/filel $ ./test15.sh file /home/rednaxela/filel vojood dare va meghdar ham dare nemitoonim in file ro remove konim چک کردن قابل نوشتن بودن : $ cat test16.sh #!/bin/bash # item_name=$HOME/filel echo echo "dar hale check kardane : $item_name" echo if [ -f $item_name ] then if [ -w $item_name ] then echo "dar hale neveshtane zamane hal dar : $item_name" date +%H%M >> $item_name # else echo "file : $item_name ghabele neveshtan nist" fi # else echo "$item_name file nist" fi $ ls -l filel -rw-rw-r-- 1 rednaxela rednaxela 0 Jun 27 05:38 filel $ ./test16.sh dar hale check kardane : /home/rednaxela/file1 dar hale neveshtane zamane hal dar : /home/rednaxela/filel $ cat filel 0543 چک کردن قابل اجرا بودن : $ cat test17.sh #!/bin/bash # if [ -x test16.sh ] then echo "shoma mitoonid script ro ejra konid" ./test16.sh else echo "script ghabele ejra nist" fi $ ./test17.sh shoma mitoonid script ro ejra konid [...] $ chmod u-x test16.sh $ $ ./test17.sh script ghabele ejra nist چک کردن مالکیت ابجکت : $ cat test18.sh #!/bin/bash # if [ -O /etc/passwd ] then echo "shoma sahebe : /etc/passwd hastid" else echo "shoma sahebe : /etc/passwd nistid" fi $ ./test18.sh shoma sahebe : /etc/passwd nistid چک کردن تعلق به گروه : $ cat test19.sh #!/bin/bash # if [ -G $HOME/testing ] then echo "shoma dar yek gorooh hastid" else echo "shoma dar yek gorooh nistid" fi $ ls -l $HOME/testing -rw-rw-r-- 1 rednaxela rednaxela 58 2019-07-30 15:51 /home/rednaxela/testing $ ./test19.sh shoma dar yek gorooh hastid $ chgrp sharing $HOME/testing $ $ ./test19 shoma dar yek gorooh nistid مقایسه جدید تر بودن و قدیمی تر بودن فایل ها : $ cat test20.sh #!/bin/bash # if [ test19.sh -nt test18.sh ] then echo "file test19 jadid tare az test18" else echo "file test18 jadid tare az test19" fi # if [ test17.sh -ot test19.sh ] then echo "file test17 ghadimi tare az test19" fi $ ./test20.sh file test19 jadid tare az test18 file test17 ghadimi tare az test19 $ ls -l test17.sh test18.sh test19.sh -rwxrw-r-- 1 rednaxela rednaxela 167 2019-07-30 16:31 test17.sh -rwxrw-r-- 1 rednaxela rednaxela 185 2019-07-30 17:36 test18.sh -rwxrw-r-- 1 rednaxela rednaxela 167 2019-07-30 17:50 test19.sh پایان قسمت پنجم از بخش دوم
  23. با کد زیر دانلود و نصب میشه pkg install netcat با اپشن h- هم میتونی لیست اپشن ها و نحوه ی استفاده رو ببینی netcat -h اگر هم هیچی ازش نمیدونی یه مقاله اموزش نت کت دانلود کن ولی در کل : این یه ابزار منسوخ شده و کم ارزشه که نزدیک ده ساله فقط اماتور ها ازش استفاده میکنن
  24. باید بایند کنی فایل هارو ، یا اموزش بایند کردن رو تو گوگل سرچ کن ، یا یه نرم افزار بایندر دانلود کن تا این کارو برات کنه
×
×
  • ایجاد مورد جدید...