چند وقته پیش داشتم برای تمرین اسکریپت نویسی میکردم که به ذهنم رسید تا با استفاده از پایتون کاری کنم که وقتی آدرس یه سایتی رو میزنم تشخیص بده که اون سایت آسیب پذیریه SQL داره یا نه بخاطر همین تصمیم گرفتم تو این پست از وب اسکریپتم رو با شما به اشتراک بزارم و خط به خط کدای اونو به شما توضیح بدم تا بیشتر با کدهای پایتون آشنا بشین
برای اینکار یه فایل متنی تو مسیر مورد نظر ایجاد کنین و بعدش پسوند اونو به Py تغییر بدین ، بعدا روی اون راست کلیک کنین و گزینه ی Edit With IDLE رو بزنین ، حالا تو محیطی که اجرا میشه کد هایی که قرار میدم رو بنویسین تا بریم سراغ توضیحات کد
import urllib
while True:
site = raw_input("Please Enter Address:")
data = urllib.urlopen(site+"\'")
if "You have an error in your SQL syntax" in data.read():
print "Result:Error"
else:
print "Result:No Error"
خب ما توی خط اول کتابخونه ی urllib رو وارد برنامه کردیم ، تو خط دوم یه حلقه درست کردیم که True هست و کاربردش اینه که وقتی کار با برنامه تموم شد بجای بسته شدن برنامه ، برمیگرده سر خونه اول یعنی همون دریافت آدرس وب ، تو خط سوم یه متغیر با نام site درست کردیم و برابرش کردیم با ورودی که از کاربر میگیریم ، تو خط چهارم یه متغیر دیگه تحت عنوان data درست کردیم و برابرش کردیم با باز شدن اون سایت و اضافه کردن یدونه ' به آخر اون آدرس ، بعدا تو خط پنجم گفتیم ، اگر متنی تحت این عنوان تو اون صفحه بود ، بنویسه ارور و در غیر اینصورت بنویسه No Error
حالا بریم سراغ نحوه کارکردن با برنامه ، وقتی که برنامه رو استارتش میکنیم ، یه آدرس وب رو باید بنویسیم تا برنامه علامت ' رو به آخر اون اضافه کنه و ببینه که ارور مربوط به کد های بالارو میاره یا نه ، ارورمونم اینه :
You have an error in your SQL syntax
خب بعد از استارت آدرس یه سایت آسیب پذیر رو میزنیم که برنامه ببینه سایته باگ داره یا نه ، من از این آدرس استفاده میکنم
http://www.tunesoman.com/product.php?id=200
خب وقتی آدرس رو وارد کنیم و اینترش کنیم ، متوجه میشیم که سایت مورد نظر آسیب پذیره
حالا برای تست یه سایت دیگه رو امتحان میکنیم که وقتی علامت ' به آخرش اضافه کردیم اروری نده
http://www.pixheaven.net/galerie_us.php?id=22
نتیجه ای که بعد از اینتر میبینیم اینه : Result:No Error که به معنیه اینه که سایت اروری که موقع کدنویسی گذاشتیم رو نداره
خب اینم از این ، فقط یه نکته رو یادتون باشه به این کد ساده وابسته نشین و بسته به دانش خودتون که از این باگ دارین اونو گسترش بدین ، بزارین دستتون راه بیفته
باشد که رستگار شویم :)