مبحث یکم : مقدمه و تاریخچه
مبحث دوم: مراحل نفوذ کردن / جلوگیری از نفوذ
مبحث سوم: حملات شبکه ای
مبحث چهارم - کار عملی
مبحث پنجم - DHCP
مبحث ششم - وب و حملات مطرح در آن
مبحث هفتم - حملات DoS
مبحث هشتم - سیستم عامل
مبحث نهم - مهندسی اجتماعی
مبحث دهم - Vulnerability (آسیب پذیری)

سوال: در یک سایت در چه جاهایی می توان injection انجام داد؟

یکی از آنها در URL است. البته در URL منوط به این است که GET انجام شود. انتقال اطلاعات چند حالت دارد. دو حالت پر استفاده آن متود GET و متود POST است. یعنی من سایتی طراحی می کنم و یک صفحه می گذارم که username و password را بگیرد. وقتی کاربر بر روی کلید submit کلیک می کند، این اطلاعات باید ارسال شود به مثلاً دیتابیس یا به صفحه ی دیگر برای confirm (تأیید). این انتقال اطلاعات را می توان با یکی از متودهای GET یا POST انجام داد. اگر از متود GET استفاده شده باشد، بعد از اینکه کاربر مقادیر فیلد username و password را وارد کد، دکمه submit را می زند، این مقادیر را می توان در URL دید. برای تست این مسئله چند سایت که فرم ورود دارند را باز کنید و مقادیری را هم در فیلدهای آن قرار دهید و دکمه submit را بزنید. اگر این سایت ها از متود GET برای ارسال داده ها استفاده کرده باشند شما می بینید که مقادیر موجود در URL عوض شد و مقادیری به آن اضافه شده است. اما اگر از متود POST استفاده شده باشد، مقادیر وارد URL نمی شوند.

توجه: برای ارسال داده های حساس مثل پسورد هیچ گاه از متود GET استفاده نمی شود.

تحقیق: علت استفاده از متودهای GET و POST چیست؟ یعنی چرا همیشه از POST استفاده نمی شود؟ چه زمانی از GET باید استفاده کرد و چه زمانی از POST؟

توجه: متغیرهایی که در URL می آیند (نام elementها، مثلاً نامی که برای textbox username در کد html قرار داده ایم

(username: <input name=”uname” type= “text” ….) هستند که با کاراکتر & (ampersand) از همدیگر جدا می شوند.

اگر سایت از متود GET استفاده کند می توان در URL آن injection زد.

البته ممکن است تمام متغیرهایی که در URL هستند به دیتابیس ربطی نداشته باشند و صرفاً یک متغیری است که نام شما را بین صفحات مختلف پاس می دهد تا بالای صفحه بتواند پیغام “سلام نام شما” را نشان دهد. به طور کلی هر جایی که داده ای سمت سرور پردازش شود می توان sql injection انجام داد. یعنی لزومی ندارد حتماً یک textbox باشد (مثلاً در بازی که جلسه قبل انجام دادیم دیدیم که یک option button بود که خودمان عبارتی را به آن اضافه کردیم و به سمت سرور فرستادیم).

در مورد سؤال تفاوت GET و POST: زمانی که از متود GET استفاده می کنیم می توان سایت را bookmark کرد. یعنی هر بار که آن bookmark را load می کنیم با همان متغیرهای موجود در URL آن، سایت مربوطه بالا بیاید ولی اگر POST باشد نمی توانیم. ترجمه bookmark “چوب الف” است.

توجه: باید نگاه کنید به اینکه stringها با چه چیزی محدود شده اند مثلاً در شکل 5 می بینید stringها با single quotation محدود شده اند. یکی از مراحل اولیه در injection پیدا کردن کاراکتر کلیدی و مؤثر است.

شکل 5

 مثلاً می توان  تک تک کاراکترهای (‘ ، “ ، ) ، } و …) که می توانند لحاظ شوند را چک کرد. اگر Error نداد که هیچ و اگر با error مواجه شد تک تک شروع به حذف کردن می کنیم تا بفهمیم کدام یک کاراکتر کلیدی است.

اسکرول به بالا