PDA

View Full Version : چند سوال درباره اس کیو ال اینجکشن



csharpprogramer88
شنبه 07 مرداد 1391, 10:39 صبح
سلام

چند سوال درباره اس کیو ال اینجکشن داشتم :
1- یک تعریف جامع از اس کیو ال اینجکشن میخوام
2- اس کیو ال اینجکشن، مختص اس کیو ال سرور ماکروسافت هست یا شامل دیگر دیتابیس ها هم میشود ؟
3- عملیاتی که در اس کیو ال اینجکشن انجام میشود چه چیزهایی است؟
4-اس کیو ال اینجکشن مختص برنامه های تحت وب هست یا شامل win application هم میشود ؟


با تشکر

حمیدرضاصادقیان
یک شنبه 08 مرداد 1391, 10:13 صبح
سلام.
1- اینجا (http://barnamenevis.org/showthread.php?58414-%D9%87%D9%86%D8%B1-%D8%AA%D8%B2%D8%B1%DB%8C%D9%82-The-Art-SQL-Injection) رو ببینید.
2- خیر الزاما مختص SQL Server نیست و نوعی تزریق کد به TSQL رو می گویند که این زبان تقریبا زبان استاندارد برای بانکهای اطلاعاتی دیگر هم هست.
3- هر کاری که شما میتوانید توسط دستورات SQL Server انجام دهید در این عملیات شامل می شود.
4- شامل هر برنامه ای که از SQL Server استفاده میکند.

csharpprogramer88
یک شنبه 08 مرداد 1391, 17:12 عصر
اون مقاله را هم دانلود میکنم ولی اگه میشه در چند خط اس کیو ال اینجکشن را تعریف کنید

حمیدرضاصادقیان
دوشنبه 09 مرداد 1391, 09:25 صبح
درواقع SQL Injection تزریق کد مورد نظر به یک رشته SQL Server هست.
فرض کنید تکه کدی مانند زیر در برنامه استفاده کردید.

" من مثال رو با دلفی بیان میکنم"

With Adoquery Do
Begin
SQL.clear;
SQl.add('Select * from table1 where name='+edit1.text);
open;

در اینجا اگر شما هر رشته ای در edit1 بنویسید رشته اون عینا به این رشته منتقل شده و جلوی نام قرار میگیره.
حالا کاربر میتونه رشته رو به این شکل ارسال کنه.

'';Delete from Table1;--

در اینجا کاربر ابتدا رشته شما رو بسته و رشته خودش رو اضافه میکنه و در اخر مابقی دستور رو نیز Comment میکنه .
به این میگن تزریق کد.
که راه برای جلوگیری از این مورد استفاده از ارسال پارامتریک مقادیر هست یا استفاده از SP.

csharpprogramer88
چهارشنبه 11 مرداد 1391, 21:32 عصر
درواقع SQL Injection تزریق کد مورد نظر به یک رشته SQL Server هست.
فرض کنید تکه کدی مانند زیر در برنامه استفاده کردید.

" من مثال رو با دلفی بیان میکنم"

With Adoquery Do
Begin
SQL.clear;
SQl.add('Select * from table1 where name='+edit1.text);
open;

در اینجا اگر شما هر رشته ای در edit1 بنویسید رشته اون عینا به این رشته منتقل شده و جلوی نام قرار میگیره.
حالا کاربر میتونه رشته رو به این شکل ارسال کنه.

'';Delete from Table1;--

در اینجا کاربر ابتدا رشته شما رو بسته و رشته خودش رو اضافه میکنه و در اخر مابقی دستور رو نیز Comment میکنه .
به این میگن تزریق کد.
که راه برای جلوگیری از این مورد استفاده از ارسال پارامتریک مقادیر هست یا استفاده از SP.

با فرض ایننکه کاربر دستور delete وارد کرد ولی دستور اصلی دستور سلکت هست حالا نقش دستور DELETE اینجا چیهههه؟

چه جوری این کد میتونه به اس کیو ال تزریق بشه؟

Felony
چهارشنبه 11 مرداد 1391, 21:50 عصر
با فرض ایننکه کاربر دستور delete وارد کرد ولی دستور اصلی دستور سلکت هست حالا نقش دستور DELETE اینجا چیهههه؟
پس توضیحات رو برای چی دادن ؟ خوندیشون ؟

فرض کن تو ادیت کدی که آقای صادقیان گفت رو بنویسی :

'';Delete from Table1;--

این کد به رشته اصلی میچسبه و تشکیل رشته زیر رو میده :

Select * from table1 where name= '';Delete from Table1;--

حالا کد زیر به SQL برای اجرا ارجاع داده میشه و چون با ; از هم جدا شدن معادل دو دستور جدا هستن ، یعنی :

Select * from table1 where name= '';
Delete from Table1;--

خوب خط اول اجرا میشه و جدول رو بر اساس اسم های خالی فیلتر میکنه ؛ حالا خط دوم اجرا میشه و اطلاعات شما رو به فنا میده ... ! OK ؟

csharpprogramer88
جمعه 20 مرداد 1391, 00:05 صبح
پس توضیحات رو برای چی دادن ؟ خوندیشون ؟

فرض کن تو ادیت کدی که آقای صادقیان گفت رو بنویسی :

'';Delete from Table1;--

این کد به رشته اصلی میچسبه و تشکیل رشته زیر رو میده :

Select * from table1 where name= '';Delete from Table1;--

حالا کد زیر به SQL برای اجرا ارجاع داده میشه و چون با ; از هم جدا شدن معادل دو دستور جدا هستن ، یعنی :

Select * from table1 where name= '';
Delete from Table1;--

خوب خط اول اجرا میشه و جدول رو بر اساس اسم های خالی فیلتر میکنه ؛ حالا خط دوم اجرا میشه و اطلاعات شما رو به فنا میده ... ! OK ؟
پس طرف باید اطلاعاتی مثل نام جدول و ... را داشته باشه تا بتونه اجراش کنه ؟

Felony
جمعه 20 مرداد 1391, 11:05 صبح
نام جداول و ... رو هم میشه با Query به دست آورد ، کافیه طرف به T-SQL مسلط باشه ، پیشنهاد میکنم چندتا آموزش SQL Injection که در سایت های هک و کرک به وفور پیدا میشه بگیری و ببینی .