آموزش باگ SQL injection

باگ SQL injection

آموزش باگ SQL injection ، برای آموزش کامل این باگ همراه ما باشید

درود بر تمامی کاربران سایت آموزش هک و امنیت pentestcore
در این آموزش قصد داریم به آموزش باگ SQL injection  بپردازیم.
ایتدا اجازه بدهید بیشتر با این باگ آشنا بشویم
همانطور که از نام این باگ پیداست مربوط به پایگاه داده است و این حمله از طریق تزریق کدهای SQL در پایگاه داده از طریق URL رخ می دهد.
امکان وجود باگ SQL injection در تمامی پایگاه داده ها مانند MariaDB ,Microsoft SQL ,Oracle ,My SQLو … وجود دارد.
این باگ هیچ ربطی به ضعف این پایگاه داده ها ندارد بلکه این باگ توسط اشتباهات برنامه نویس در زبان های PHP ASP  و کانفیگ غیر استاندارد سرور به وجود می آید و به کاربر اجازه مقدار دهی و اجرا دستورات پایگاه داده را از طریق URL  می دهد. Blind SQL Injection یکی از حالات این باگ است.
باگ SQL injection می تواند اهداف متفاوتی داشته باشد. وقتی که شما بتوانید دستورات پایگاه داده را از طریق URL  اجرا کنید تقریبا هر کاری میتوانید بکنید.سرقت یوزرو پسورد ادمین و کاربران ، سرقت و تغییر تمامی محتوا سایت، دیفیس کردن سایت و …
اطلاعات تکمیلی:

  • میزان گسترش پذیری : بالا
  • میزان استفاده هکر ها از باگ : بالا
  • سطح دانش برای نفوذ: در حالت عادی دانش بالا اما در صورت استفاده از نرم افزار پایین

 
SQL injectio دارای متد های متفاوتی است از جمله:

  • متد UNION
  • متد Error Based
  • متد Blind Sql Injection
  • متد Boolean Based Blind
  • متد Time Based Blind

 

شاید بتوان گفت رایج ترین متد ، متد UNION است

ما در این آموزش متد UNION را از مجموعه متد های باگ SQL injection آموزش می دهیم و بر روی پایگاه داده My Sql کار میکنیم.

آموزش باگ SQL injection

آموزش باگ SQL injection
برای شروع شما باید با یک دورک ، تارگت خودتون رو انتخاب کنید.
دقت کنید که در URL حتما حتما باید ورودی وارد شده باشد. مثلا newsid=3
در اینجا عدد 3 یک ورودی است که مشخص می کند خبر 3 را باید خواند و در پایگاه داده بدنبال این خبر می گردد. پس بدنبال سایت هایی که در URL خود عبارتی مثل بالا را دارند بروید.
برای آموزش دورک نویسی هم توصیه میکنم آموزش های زیر را مطالعه بفرمایید

  هک حساب های کاربری فیسبوک تنها با داشتن شماره قربانی

آموزش دورک نویسی

آموزش ساخت دورک sql

ساخت دورک با ابزار اختصاصی

حال فرض کنید تارگت ما به شکل زیر است:

Target.com/news-detail.php?newsId=4

حال یک عبارت کوتیشن ( این عبارت ‘ )را در انتها URL می گذاریم.

‘Target.com/news-detail.php?newsId=4

اگر error بدهد خب باگ SQL injection دارد.
اما چطور با یک کوتیشن چنین چیزی را متوجه شدیم؟
ما در URL در حال مقدار دهی هستیم و یک عبارت کوتیشن را سمت پایگاه داده ارسال میکنیم. دستور کوتیشن به گونه ای است که هنگامی که کوتیشن باز میشود، باید بسته شود. وقتی که ما تنها یک کوتیشن می گذاریم ، پایگاه داده error می دهد و می گوید کوتیشن را ببند. یعنی یک کوتیشن دیگر اضافه کن تا ساختار دستور درست شود. در اینجا ما می فهمیم که دستورات ما سمت پایگاه داده ارسال می شوند.
اما گاهی امکان دارد error ندهد.

 اگر error ندهد 2 حالت پیش میاد:

  • باگ دارد اما از سمت سرور error بسته شده که error به کاربر نمایش داده نشود
  • باگ ندارد

اگر error نداد برای اطمینان از اینکه باگ دارد یا نه ما ابتدا عبارت and 1=1  را در انتها URL میگذاریم. سپس عبارت and 1=2 را می گذاریم.

اما چرا اینکار را میکنیم؟

عبارت and1=1  یک عبارت صحیح است و 1 برابر 1 است. پس اگر مقدار درهی در URL باز باشید دستور فرستاده می شود و صفحه براحتی بالا میاد .بعد and 1=2 یک عبارت غلط است. چون 1 برابر 2 نیست. در اینجا امکان دارد روند بارگذاری صفحه به مشکل بخورد. مثلا متن خبر درست لود نشود. عکس ها لود نشود یا هر تغییر دیگری. در اینجا با اینکه error بسته است اما ما می فهمیم که باگ دارد چون عبارت نادرست ما که and 1=2 بود سمت پایگاه داده ارسال شد و بر روی لود شدن صفحه تاثیر گذاشته.
شکل دستورات در انتها URL ، مانند زیر است:

Target.com/news-detail.php?newsId=4 and 1=1

Target.com/news-detail.php?newsId=4 and 1=2

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

  پروتکل SNMP چیست ؟

شناسایی اطلاعات فنی سایت با افزونه wappalyzer

آموزش باگ SQL injection
اگر سایت با PHP نوشته شده بود یا وب سرور آپاچی باشد به احتمال زیاد پایگاه داده Mysql است.
اما اگر سایت با ASP نوشته شده باشد و وب سرور IIS باشد احتمالا پایگاه داده Microsoft SQL Server است.
توجه کنید که نوشتم احتمالا. ممکن است که شخصی از زبان ASP استفاده کند و پایگاه داده Mysql .
هرچند که این کار حرفه ای نیست اما احتمال چنین کاری  و برعکس آن وجود دارد.
به همین منظور روش دستی تشخیص پایگاه داده هم عنوان می کنیم.
در انتها URL باید عبارت ‘and 1=’1 را بنویسیم مانند زیر:

‘Target.com/news-detail.php?newsId=4 and 1=’1

اگر صفحه بدون تغییر بارگذاری شود پایگاه داده Mysql است اما اگر کوچکترین تغییری در صفحه به وجود بیاد و عکس یا متنی لود نشود پایگاه داده Microsoft SQL Server است اما چه اتفاقی می افتد که چنین می شود؟
در پایگاه داده Microsoft SQL Server اگر عدد در کوتیشن برود ، اون رو رشته حساب می کند و خاصیت عددی خود را از دست می دهد. اما در Mysql اگر عدد در کوتیشن برود همچنان عدد است . پس اگر پایگاه داده Microsoft SQL Server باشد 1=’1’ یک عبارت غلط است.چون 1 اول یک عدد است و 1 دوم یک کاراکتر یا رشته است. وقتی هم عبارت غلط باشد سایت درست لود نمی شود. اما اگر پایگاه داده Mysql باشد عبارت 1=’1’ یک عبارت صحیح است، و سایت براحتی بارگذاری می شود.
قسمت اول آموزش به پایان رسید.
با قسمت های بعدی همراه ما باشید تا این باگ را بصورت کامل با هم فرا بگیریم.

امیدوارم از قسمت اول آموزش باگ SQL injection لذت برده باشید

شاد و پیروز باشید…

5/5 ( 1 نظر )

مطالب مرتبط

۸ دیدگاه در “آموزش باگ SQL injection”

  • Amir دی ۲۶, ۱۳۹۷ پاسخ

    خیلی خوب بود فقط اگه ممکنه سایر متود ها رو هم آموزش بدید
    با تشکر

    • arsalan دی ۲۷, ۱۳۹۷ پاسخ

      درود بر شما دوست عزیز
      سپاس از اینکه نظرخودتون روبا ما درمیان گذاشتید.
      بعد از اینکه در قسمت های آتی متد union تمام شد، به سراغ آموزش کامل دیگر متد ها و باگ ها می رویم.
      شاد و پیروز باشید.

  • میلاد دی ۳۰, ۱۳۹۷ پاسخ

    درود ممنون بابت آموزش ، عالی بود

    • arsalan دی ۳۰, ۱۳۹۷ پاسخ

      درود برشما کاربر گرامی.
      سپاس از اینکه ما رو همراهی میکنید.
      با قسمت بعد این آموزش هم همراه ما باشید
      پیروز باشید

  • امید تیر ۲۰, ۱۳۹۸ پاسخ

    با سلام.اگر در انتهای سایت یا کوتیشن یا ۱=۱ یا ۱=۲ بگذاریم سایت ارور۴۰۴ بدهد آیا باگsqlدارد؟ ممنون

    • Nima Nani مرداد ۲۵, ۱۳۹۸ پاسخ

      درود
      خیر باگ ندارد اما باید برسی دقیق تری انجام شود

  • webcpr مرداد ۱, ۱۳۹۸ پاسخ

    عالی بود نتیجه یه روز سرچمو دیدم

    • Nima Nani مرداد ۱, ۱۳۹۸ پاسخ

      درود
      خوشحالیم اموزش برای شما مفید بوده است
      موفق باشید

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *