آموزش باگ 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 در زیر قرار گرفته است :

شناسایی اطلاعات فنی سایت با افزونه 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 لذت برده باشید

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

4.4/5 (9 نظر)

مطالب مرتبط

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

  • Amir دی 26, 1397 پاسخ

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

    • arsalan دی 27, 1397 پاسخ

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

  • میلاد دی 30, 1397 پاسخ

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

    • arsalan دی 30, 1397 پاسخ

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

  • امید تیر 20, 1398 پاسخ

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

    • Nima Nani مرداد 25, 1398 پاسخ

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

  • webcpr مرداد 1, 1398 پاسخ

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

    • Nima Nani مرداد 1, 1398 پاسخ

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

  • blackmind54 دی 20, 1398 پاسخ

    با سلام ممنون از اموزش خوبتون !
    اگر سایت ارور ۴۰۳ بده باگ داره ؟

    • نیما حسینی دی 22, 1398 پاسخ

      درود بر شما و تشکر
      خیر ربطی ندارد ارور ۴۰۳ که مشاهده می کنید احتمالا صفحه مورد نظر شما دارای محدودیت است و نمی توانید مشاهده کنید.

  • داریوش اسفند 13, 1398 پاسخ

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

    • نیما حسینی اسفند 29, 1398 پاسخ

      درود از دیدگاه خوب شما سپاس گذاریم
      بزودی اموزش های دیگری با متد های دیگر قرار خواهد گرفت.

  • محمدامین اردیبهشت 21, 1399 پاسخ

    سلام واقعا آموزشاتون عالی هست
    یه سوال من روی سایتی تست کردم و به من runtime error می دهد آیا سایت باگ sql داره؟

    • نیما حسینی اردیبهشت 27, 1399 پاسخ

      درود بر شما مرسی از دیدگاه خوبتون
      باید برسی شود به این صورت نمی توان تشخیص داد.

  • scarecrow اردیبهشت 31, 1399 پاسخ

    درود به شما با اموزش های خوبتون 🙂

    این دوره تمام شده بدونیم ..خیلی وقت بروز نشده…

    • نیما حسینی خرداد 17, 1399 پاسخ

      درود بر شما
      در صورت درخواست های بیشتر برای ادامه این اموزش ، اموزش های جدید تری در این رابطه هم قرار خواهیم داد.

  • مریم مرداد 21, 1399 پاسخ

    سلام
    من هر دورکی که مینویسم و گوگل نتایجی که به من میده اصلا در حالت معمولی باز نمیشن(یعنی وارد سایت نتیجه نمیشه )، و نمیتونم روش ازمایشی انجام بدم به نظر شما مشکل چیه ؟؟

    • نیما حسینی مرداد 26, 1399 پاسخ

      درود
      احتمالا از سایت هایی که باز می کنید با آی پی ایران باز نمی شوند آی پی خود را تغییر دهید یا دورک هایی که استفاده می کنید درست نیستند پیشنهاد می کنیم به آدرس زیر بروید و از ابزار آنلاین ما برای ساخت دورک استفاده کنید.
      tools.pentestcore.com

  • Alone مرداد 31, 1399 پاسخ

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

    • نیما حسینی شهریور 14, 1399 پاسخ

      درود بر شما تشکر
      درصورت امکان قرار خواهیم داد.

  • رضا مهر 27, 1399 پاسخ

    سلام من وب سایتی رو پیدا کردم که مطمئن هستم باگ sql داره ولی چطور صفحه ایی رو پیدا کنم که به صورت site.com/index.php?id=xx باشه تا بتونم متود ها رو به کمک اون پیدا سازی کنم؟

    • نیما حسینی آبان 3, 1399 پاسخ

      درود
      همه وب سایت ها از ورودی های Get استفاده نمی کنند شما باید با انواع روش ها و تکنیک ها اشنا باشید تا در هر شرایطی بتوانید از باگ استفاده کنید اگر ورودی شما به صورت POST بود پیشنهاد می کنیم از ابزار Burp استفاده کنید.

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

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

قوانین پن تست کور
دوره کالی لینوکس
نماد های اعتماد
نماد های اعتماد