<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های BlackHat</title><link>https://virgool.ir/feed/@fokofajo</link><description></description><language>fa</language><pubDate>2026-11-11 14:44:15</pubDate><image><url>https://virgool.ir/images/default-avatar.jpg</url><title>BlackHat</title><link>https://virgool.ir/@fokofajo</link></image><item><title>آموزش باگ SQL injection</title><link>https://virgool.ir/@fokofajo/آموزش-باگ-sql-injection-ebbqxd26xhfu</link><description>آموزش باگ SQL injection ، برای آموزش کامل این باگ همراه ما باشیددر این آموزش قصد داریم به آموزش باگ 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  ابزار NoSQLMap برای حملات تحت وب شاید بتوان گفت رایج ترین متد ، متد UNION استما در این آموزش متد UNION را از مجموعه متد های باگ SQL injection آموزش می دهیم و بر روی پایگاه داده My Sql کار میکنیم.آموزش باگ SQL injectionآموزش باگ SQL injectionبرای شروع شما باید با یک دورک ، تارگت خودتون رو انتخاب کنید.دقت کنید که در URL حتما حتما باید ورودی وارد شده باشد. مثلا newsid=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 ندهد ۲ حالت پیش میاد:    باگ دارد اما از سمت سرور error بسته شده که error به کاربر نمایش داده نشود    باگ ندارداگر error نداد برای اطمینان از اینکه باگ دارد یا نه ما ابتدا عبارت and 1=1  را در انتها URL میگذاریم. سپس عبارت and 1=2 را می گذاریم.اما چرا اینکار را میکنیم؟عبارت and1=1  یک عبارت صحیح است و ۱ برابر ۱ است. پس اگر مقدار درهی در URL باز باشید دستور فرستاده می شود و صفحه براحتی بالا میاد .بعد and 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 باشد ۱=’۱’ یک عبارت غلط است.چون ۱ اول یک عدد است و ۱ دوم یک کاراکتر یا رشته است. وقتی هم عبارت غلط باشد سایت درست لود نمی شود. اما اگر پایگاه داده Mysql باشد عبارت ۱=’۱’ یک عبارت صحیح است، و سایت براحتی بارگذاری می شود.</description><category>BlackHat</category><author>BlackHat</author><pubDate>Mon, 11 Mar 2019 03:40:18 +0330</pubDate></item></channel></rss>