امیر
امیر
خواندن ۳ دقیقه·۲ سال پیش

آموزش SQL Injection مقدماتی (part 1)


سلام خدمت همه دوستان عزیز امیرم با آموزش مقدماتی SQL دوست داشتنی!

خب برای شروع یه کد ساده php ببینیم:

و خروجی این کد ساده php رو هم باهم ببینیم:

خب اصلا چرا برای شروع اومدم از کد های php مثال زدم براتون؟

برای این که بهتر متوجه بشیم کارهایی که تو آسیب پذیری sql injection انجام میدیم دقیقا چیکار میکنه،براتون مثال زدم.

حالا جلوتر بهتر متوجه میشید.

ببینید وقتی ما از یه کاراکتری مثل ' (single quotation ) استفاده میکنیم چه اتفاقی تو کد ما میوفته:

(به خط چهارم آخرین کاراکتر یعنی ' دقت کنید)

میبینید که حتی در ادیتور هم رنگ نوشته ها تغییر کرد حالا خروجی کد رو ببینیم:

خب به ارور خوردیم که از همین ارور باید استفاده کنیم برای هک کردن وب سایت ها با استفاده از آسیب پذیری sql injection اما چجوری؟ بریم باهم یه وبسایت که این آسیب پذیری رو داره پیدا کنیم و اطلاعات ادمین یا هر کسی که تو سایت ثبت نام کرده رو بکشیم بیرون!

اولین کاری که باید بکنیم اینه که یه وبسایتی که آسیب پذیر هست رو پیدا کنیم. اما چطوری؟

ما یه مبحثی داریم به اسم گوگل هکینگ که تو مقاله بعدی دقیق میگم چیه.

با استفاده از دورک

inurl:shop_details.php?id=

به این وبسایت

https://pickandget.com/shop_details.php?id=274

میتونیم برسیم و روش تست انجام بدیم.

ظاهر اولیه وبسایت رو قبل از تست ببینیم:

اما وقتی از single quot استفاده میکنیم سایت به چه شکلی در میاد؟

آگه به url وبسایت نگاهی بندازیم میبینیم که فقط در آخر وبسایت یدونه ' اضافه کردیم و ظاهر وبسایت تغییر کرد یا در اصل یه قسمتی از کد های وبسایت به کل کار نکرد.

این نشون میده که این وبسایت آسیب پذیری sql injection داره.

نکته: ارور ممکنه شکل های متفاوتی داشته باشه از لود نشدن یه بخش خاص بگیر تا نشون دادن ارور های مختلف.

جلوتر که بریم بیشتر نشونتون میدم.

خب سایت آسیب پذیره حالا باید چیکار کنیم؟

' رو حذف میکنیم و از یک query استفاده میکنیم تحت عنوان:

order by 3154354351--

معنی این دستور چیه اصلا؟

ما با دستور order by به سایت میگیم که: داداش این تعداد جدول رو تو پایگاه داده داری؟ و یه عدد بزرگ بهش میدیم مثل همون عددی که من دادم(که مطمینیم این تعداد جدول رو تو یه وبسایت نمیتونیم داشته باشیم!)

اون دوتا - که ته دستور زدم هم به این معنیه که ادامه این دوتا هرچی بود رو کامنت کن و به درد من نمیخوره!

یا به عبارتی دستورای من تا همینجا بود :)

اگه سایت ارور بده میریم سراغ ادامه اما تو اکثر مواقع سایت ها به ما دروغ میگن و سایت لود میشه و که به این معنیه که سایت به ما میگه اره داداش دارم!(دروغ میگه ها باور نکنید یه وقت:)

اینجور مواقع ما از یه بایپس استفاده میکنیم که این شکلیه:

https://pickandget.com/shop_details.php?id=274' order by 974396534--+

' بعد عدد و + در انتهای دستور

در این بخش سایت دیگه نمیتونه به ما دروغ بگه و ما بعد از order by عدد 1 رو بهش میدیم و تفاوت بین عدد بزرگ و 1 رو به راحتی میتونیم متوجه بشیم.

اینجا order by عدد بزرگ رو میبینیم:

اینجا هم order by عدد 1:


ما اعداد مختلف رو تست میکنیم تا زمانی که به یه عددی برسیم که سایت مثل عدد 1 لود بشه!

ما اگه بزنیم:

https://pickandget.com/shop_details.php?id=274' order by 17--+

با تصویر اون اسباب بازیه رو به رو میشیم که به معنیه اروره اما اگه به جای 17 از عدد 16 استفاده کنیم با این تصویر کیک که دقیقا مثل پاسخیه که عدد 1 به ما داده بود هست. پس ما میفهمیم که تعداد جدول های این وبسایت 16 تا هست.

چند تا سایت تست کنید آماده داشته باشید تا مقاله بعدیو آماده کنم و بریم واسه هک.

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

پیروز و سلامت باشیدو جیباتون پر پول :)

1401/12/13✔12:16

sql injectionهکرهک سایت
دانشجویی که عاشق کامپیوتر شد!
شاید از این پست‌ها خوشتان بیاید