ts icon
سرور تیم اسپیک گاردایران
Hb051

درخواست دور زدن یک Input text

پست های پیشنهاد شده

با سلام

ما اینجا یک input text داریم خواستم ببینم امکان دور زدنش هست یا خیر

$mesal = $_POST['mesal'];
$query = mysql_query("UPDATE user SET Name = '0',PGR = '0',pKey = '$mesal',WeB = '1' WHERE Name = '$name'", $link);

	

 

خب بزارید توضیح بدیم

$mesal همون مقداریه که توی کادر وارد میشه حالا میتونه عدد یا حروف باشه

میخوام یه چیزی باشه که مثلا بتونیم این رو دور بزنیم و به جایی که پسورد عوض بشه در حقیقت Name='Example' بشه 

یه همچین چیزی امکانش هست؟

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

ببینید اینجا یک کادری ما داریم که pKey رو تغییر میده

ما میخوایم یه چیزی تو این کادر بنویسیم که در واقع Name تغییر کنه 

مثلا تو کادر بنویسیم 123 پسورد میشه 123

ولی میخوایم که در حقیقت Name بشه 123

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

درود

 

تارگت کاملا آسیب پذیر است ؛ به دلایل زیر :

 

- هیچ ارزیابی اعتباری روی اطلاعات fetch شده از فرم مربوطه وجود ندارد و اطلاعات آن مستقیما در Query پایگاه داده استفاده شده که این بی احتیاطی موجب آسیب پذیری رایج SQL Injection شده است .

 

- جدا از این مسئله از تابع منسوخ شده PHP به نام mysql_query استفاده شده که رعایت نکردن استاندارد های لازم از دلایل منسوخ شدن همین تابع بوده .

 

راه حل :

 

* ارزیابی اعتبار فرم پیش از استفاده از اطلاعات آن

* استفاده از از توابع و استاندارد های پیشرفته مثل PDO Binding

 

موفق باشید

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 8 دقیقه قبل، R3dC0d3r گفته است :

درود

 

تارگت کاملا آسیب پذیر است ؛ به دلایل زیر :

 

- هیچ ارزیابی اعتباری روی اطلاعات fetch شده از فرم مربوطه وجود ندارد و اطلاعات آن مستقیما در Query پایگاه داده استفاده شده که این بی احتیاطی موجب آسیب پذیری رایج SQL Injection شده است .

 

- جدا از این مسئله از تابع منسوخ شده PHP به نام mysql_query استفاده شده که رعایت نکردن استاندارد های لازم از دلایل منسوخ شدن همین تابع بوده .

 

راه حل :

 

* ارزیابی اعتبار فرم پیش از استفاده از اطلاعات آن

* استفاده از از توابع و استاندارد های پیشرفته مثل PDO Binding

 

موفق باشید

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

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

سوالی که مطرح هست اینه که متغیر $name جزئی از فرم هست یا خیر ؟

 

- اگر پاسخ بله هست که کاری که باید انجام بشه کاملا مشخص هست !

 

- اگر پاسخ خیر هست و با توجه به اینکه به اساس SQL و SQL Injection آشنایی دارید ادامه این مطلب رو دنبال کنید

 

آسیب پذیری واضح : در 90 درصد مواقع جدول کاربران شامل ستونی به اسم access_level ، user_type و یا غیره هست که بیانگر سطح دسترسی کاربر هست که با تحلیل پایگاه داده میتونید نام ستون رو پیدا کنید ؛ کافیه اون مقدار آپدیت بشه تا یوزر شما سطح دسترسی ادمین بگیره . پس بنا بر فرضیه گفته شده متغیر $mesal باید حاوی رشته زیر باشه :

 

', access_level = 'admin

نکته : این تکنیک فقط در توابع غیر استانداردی مثل mysql_query و در صورتی که کاراکتر ها خنثی نشده باشند جواب خواهد داد ؛ در تکنیک های استانداردی مثل بایندینگ تمامی کاراکتر های موجود در پارامتر های یک فیلد ESCAPE و خنثی شده .

 

عمل غیر ممکن در شرایط موجود  : با توجه به اینکه متغیر mesal وسط رشته query اپدیت هست (قبل از where) و متغیر name (بعد از where) قرار گرفته ، امکان تاثیر گذاری بر روی اون قسمت وجود ندارد .

اما چرا گفته شده غیر ممکن در شرایط موجود ؟ چرا که تابع mysql_query فقط پاسخگوی یک statement بوده و هرگونه تلاش برای ارسال multiple statement به سمت SQL Parser پایگاه داده به وسیله این تابع با خطای php مواجه خواهد شد .

در صورت استفاده از توابعی که از multiple statement پشتیبانی میکنند خیلی راحت میشه به شکل زیر به هدف مورد نظر رسید :

 

$mesal = "' where name='example';" . $second_statement;

 

در شرایطی که منظور از Name ، فیلد قبل از where clause باشد به راحتی با overwrite کردن آن ، مقدار تغییر خواهد کرد :

 

$mesal = "', Name='Example";

 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برای ارسال دیدگاه یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

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

ایجاد یک حساب کاربری

برای حساب کاربری جدید در سایت ما ثبت نام کنید. عضویت خیلی ساده است !

ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید

ورود به حساب کاربری