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

درخواست کمک از اساتید برای mysql query

Simple Clean

کاربر تازه وارد
تاریخ عضویت
16 آگوست 2005
نوشته‌ها
283
لایک‌ها
2
این تاپیک و من قبلا یه بار زدم توسط مدیر محترم (mehdi) حذف شد ...
با توجه به این که تاپیک هیچ مشکلی نداره (چون واسه اطمینان یه کلمه هم بود ادیت کردم ) اصلا توقع ندارم بیام ببینم دسکاری شده !!!
----------------
سلام
من الان میتونم هر mysql query که بخوام با استفاده از sql injection در یک سایت اجرا کنم نام تعدادی از فیلدهای تبل mysql اون رو بلدم ولی نام تبل رو بلد نیستم اینجو اگه مثلا بخوام بزنم DROP TABLENAME نام تبل رو بلد نیستم و خلاصه هیچ کاری نمیتونم بکنم
آیا QUERY از MYSQL وجود داره که بشه کاری کنم بدون اینکه نام تبل بخواد ؟
یه سوال دیگه به جز علامت ; چه جوری میشه دو دستور جداگانه ی mysql رو در کنار هم داشت مثلا
کد:
SELECT * FROM XX WHERE ... ; DROP TABLE TABLENAME;
 

firebird

Registered User
تاریخ عضویت
2 جولای 2005
نوشته‌ها
1,424
لایک‌ها
10
سن
46
شما که اینقدر واردی و هکری و از این حرفا به mysql بگو که لیست table ها رو بهت نشون بده دیگه :D ولی نکن این کارا رو. آخر عاقبت نداره.
 

Simple Clean

کاربر تازه وارد
تاریخ عضویت
16 آگوست 2005
نوشته‌ها
283
لایک‌ها
2
من هکر که نیستم
واردم نیستم چون اگه بودم اینحا تاپیک نمیزدم( نمیدونم کحا چنین ادعایی کردم تو این تاپیک که فقط دو تا سوال پرسیدم ؟)
ا به mysql بگو که لیست table ها رو بهت نشون بده
ولی خوب اگه بگید بدون استفاده از php با چه کد ی میشه به mysql گفت ممنونت میشم
 

Simple Clean

کاربر تازه وارد
تاریخ عضویت
16 آگوست 2005
نوشته‌ها
283
لایک‌ها
2
اگه منظورت SHOW TABLES باشه این بعد نیاز به PHP داره که متغیر رو چاپ کنی
قسمت دوم سوالمم اگه جواب بدید باز کارم میشه

یه سوال دیگه به جز علامت ; چه جوری میشه دو دستور جداگانه ی mysql رو در کنار هم داشت مثلا
Code:

SELECT * FROM XX WHERE ... ; DROP TABLE TABLENAME;
 

firebird

Registered User
تاریخ عضویت
2 جولای 2005
نوشته‌ها
1,424
لایک‌ها
10
سن
46
آخه سوالت خیلی سطح بالا بود ;) در مورد سوال دومت من فقط ; و سرخط رو میدونم. سوال اولت رو هم تا اونجایی که من خبر دارم راههای زیاد دیگه ای هست. اگه قوانین فوروم اجازه بده دوستان میان توضیح میدن.
 

Simple Clean

کاربر تازه وارد
تاریخ عضویت
16 آگوست 2005
نوشته‌ها
283
لایک‌ها
2
شما خودتون خواهشازحمتشو بکشین حتی اگه در حد اسمشم باشه روش که بگین خوبه
 

Mehdi

مدیر بازنشسته
تاریخ عضویت
1 آگوست 2004
نوشته‌ها
5,602
لایک‌ها
49
محل سکونت
Anywhere
خروجی میتونی بگیری از نتایج ؟
اگه بتونی خروجی بگیری , میشه اول لیست جدول هارو بدست اورد , از روی جدول ها جدول اطلاعات لاگین ادمین رو پیدا کرد , از رو اون فیلد هاشو بدست اورد , بعدش با یه کوئری یه یوزر و پس جدید بهش اختصاص داد .

در غیر اینصورت انگار چراغ رو خاموش کردی , میخوای تو یه اتاق بزرگ دنبال یه خودکار بگردی (عجب مثالی)
s123.gif
 

Simple Clean

کاربر تازه وارد
تاریخ عضویت
16 آگوست 2005
نوشته‌ها
283
لایک‌ها
2
اگه منظورت SHOW TABLES باشه این بعد نیاز به PHP داره که متغیر رو چاپ کنی
همونطور که تو پست 3 گفتم خروجی اگه منظور print باشه نه !!
حالا یه چیز عجیب من فکر کنم اسم تبل رو هم بلد شدم و لی میدونید مشکل چیه ؟ اگه یه علامت ; و بخوام که هم SELECT رو انجام بده هم یه فرمان دیگه مثل DROP TABLE اررور MYSQL میده ... یعنی به این علامت ; حساسه البته امتحان کردم اگه همین علامت تو کامنت باشه یعنی #; یا /* ; اررور نمیده
 

Mehdi

مدیر بازنشسته
تاریخ عضویت
1 آگوست 2004
نوشته‌ها
5,602
لایک‌ها
49
محل سکونت
Anywhere
همونطور که تو پست 3 گفتم خروجی اگه منظور print باشه نه !!
حالا یه چیز عجیب من فکر کنم اسم تبل رو هم بلد شدم و لی میدونید مشکل چیه ؟ اگه یه علامت ; و بخوام که هم SELECT رو انجام بده هم یه فرمان دیگه مثل DROP TABLE اررور MYSQL میده ... یعنی به این علامت ; حساسه البته امتحان کردم اگه همین علامت تو کامنت باشه یعنی #; یا /* ; اررور نمیده
خوب معلومه ارور میده , شما نمیتونی که سه چهار تا فرمان رو باهم انجام بدی , در ضمن وقتی میگی خروجی نمیده دستور سلکت بدرد نمیخوره , دستوری که بدردت میخوره , اینسرت هست که میتونی یه یوزر نیم جدید به دیتابیس اختصاص بدی , یا با دستور آپدیت پسورد رو ویرایش کنی !
 

hidensoft

کاربر تازه وارد
تاریخ عضویت
5 ژانویه 2007
نوشته‌ها
54
لایک‌ها
0
سلام
من هیچین کاری رو در MySQL 5.0.41 اجرا کردم. تیبل رو پاک کرد و یه warning نشون داد که فایده ای نداشت.
دوستان من که از ورژن پایین تری از MySQL استفاده می کنند همشون گفتند که نمی شه و خطا در یافت می کردند.

ولی این سوال برام پیش اومد
در اکثر مواقع برنامه نویسان به دنبال کشف باگ و حفره های امنیتی برنامه هستند برای جلوگیری از نفوذ ولی اینطور که معلومه شما می خوای نفوذ کنی درسته ؟

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

موفق باشید
 

Behzad1984

کاربر تازه وارد
تاریخ عضویت
14 جولای 2007
نوشته‌ها
13
لایک‌ها
0
سن
40
محل سکونت
Tehran, Iran
خوشبختانه خالقین PHP آنقدر زرنگ بوده اند که مانع اجرای چندین Query با یک فراخوانی mysql_query شوند.

امتحان کنید:
PHP:
mysql_query("SELECT 1; SELECT 2") or die(mysql_error());

فرمی از SQL Injection که در PHP باید مراقب آن بود، به قسمت Where Clause از Query
اضافه می شود، نه اینکه یک سمی کالن اضافه شود و یک Query دیگر در امتداد آن نوشته شود.
بجز ; هم نمیتوان از کاراکتر دیگری برای نشان دادن انتهای دستورات SQL در MySQL استفاده کرد.
 

Simple Clean

کاربر تازه وارد
تاریخ عضویت
16 آگوست 2005
نوشته‌ها
283
لایک‌ها
2
پس اینجور که معلومه مام بی خیال شیم ؟ راه نداره ؟
 

Sirus-v

کاربر تازه وارد
تاریخ عضویت
3 نوامبر 2006
نوشته‌ها
45
لایک‌ها
0
محل سکونت
Silent Hill
اگه خروجی داشته باشی میتونی از دستور UNION استفاده کنی . با این می تونی تو PHP از 2 تا table دستور select رو اجرا کنی . البته حواست باشه که داده های که select می کنی باید از یک نوع باشند .
 

Simple Clean

کاربر تازه وارد
تاریخ عضویت
16 آگوست 2005
نوشته‌ها
283
لایک‌ها
2
این خیلی دستور محشری بود ولی اگه یه چیزی شبیه این واسه غیر از select باشه ؟؟؟
 
بالا